Error: la clave $ conditionalHandlers no debe comenzar con ‘$’ mongodb

Tengo un problema con mongodb y especialmente con el paquete de mongoose para node.js. Tengo el siguiente esquema:

var Schema = mongoose.Schema; var location = new Schema ({ nomville: {type: String, required: true}, description: {type: String, required: true}, quartier: [quartier], critere: [misc], modified: {type: Date, default: Date.now} }); var misc = new Schema ({ publictransp: {type: Number}, culture: {type: Number}, traffic: {type: Number}, nature: {type: Number}, supermarket: {type: Number}, school: {type: Number}, sport: {type: Number}, nightlife: {type: Number}, mean: {type: Number} }); var rue = new Schema ({ nomrue: {type: String}, modified: {type: Date, default: Date.now} }); var quartier = new Schema ({ nomquartier: {type: String}, listerue: [rue], modified: {type: Date, default: Date.now} }) var ObjModel = mongoose.model('Obj',location); 

Y cuando bash publicar un objeto de este esquema con una consulta Jquery, obtengo esto:

[Error: la clave $ conditionalHandlers no debe comenzar con ‘$’]

Alguna idea ? Estoy completamente atascado con este.

EDIT1: aquí está la función de publicación:

 //CREATE PRODUCTS app.post('/api/products', function(req,res){ var product; console.log("POST: "); console.log(req.body); product = new ObjModel({ nomville: req.body.nomville, description: req.body.description, quartier: [quartier], critere: [misc], }); product.save(function(err){ if (!err) { return console.log("created"); } else { return console.log(err); } }); return res.send(product); }); 

EDIT2: aquí está la consulta

  jQuery.post("/api/products", { "nomville": "Strasbourg", "description": "Ville de Strasbourg", "quartier": [ { "nomquartier": "Centre", "listerue": [ { "nomrue": "22 Novembre" }, { "nomrue": "Abattoir" }, { "nomrue": "Fonderie" }, { "nomrue": "Francs Bourgeois" } ] }, { "nomquartier": "Cité de l'Ill", "listerue": [ { "nomrue": "Anguille (chemin de l)" }, { "nomrue": "Civelles (promenade des)" }, { "nomrue": "Hechner (rue)" }, { "nomrue": "Phario (pont)" } ] }, { "nomquartier": "Krutenau", "listerue": [ { "nomrue": "Abreuvoir (rue de l)" }, { "nomrue": "Bain Finkwiller (rue du)" }, { "nomrue": "Fustel de Coulanges (quai)" }, { "nomrue": "Hôpital (place de l)" } ] } ], "critere":[ { "publictransp": 2, "culture": 8, "traffic": 5, "nature": 7, "supermarket": 3, "school": 5, "sport": 6, "nightlife": 4, "mean": 5 }, ] }, function(data, textStatus, jqXHR) { console.log("Post resposne:"); console.dir(data); console.log(textStatus); console.dir(jqXHR); }); 

Eso es lo que obtengo después de publicar la consulta:

 [ { "nomville": "Strasbourg", "description": "Ville de Strasbourg", "_id": "526ecdd3a78290010c000004", "__v": 0, "modified": "2013-10-28T20:49:23.235Z", "critere": [], "quartiers": [ { "_id": "526ecdd3a78290010c000005", "listerue": [] } ] } ] 

Esto es normal ??

Se está refiriendo a critere y misc en la definición del esquema de location antes de que se definan cualquiera de esos esquemas. Esto está causando un error críptico, probablemente debido a que Mongoose junta una consulta no válida debido a los valores inesperados inesperados en la definición del esquema.

Más allá de esto, no sé qué intentas hacer aquí:

 product = new ObjModel({ nomville: req.body.nomville, description: req.body.description, // Are the next two lines a mistake? It appears as though you're trying // to create an object using the schemas. quartier: [quartier], critere: [misc], });