vicuña salsoteca mangosta mackenna klub club clausurado clases cierre cerrado mongodb mongoose

mongodb - salsoteca - klub mangosta facebook



¿Cómo empujar una matriz de objetos en una matriz en mangosta con una sola llamada? (3)

Necesito insertar múltiples valores en una matriz en mangosta usando una llamada. Intenté hacerlo usando una matriz más pequeña pero la matriz se está insertando como una sub-matriz.

var kittySchema = new mongoose.Schema({ name: String, values: [Number] }); var Kitten = db.model(''Kitten'', kittySchema); Kitten.update({name: ''fluffy''},{$push: {values:[2,3]}},{upsert:true},function(err){ if(err){ console.log(err); }else{ console.log("Successfully added"); } });

El resultado de llamar al código anterior tres veces da el siguiente resultado:

{ "_id" : ObjectId("502b0e807809d79e84403606"), "name" : "fluffy", "values" : [ [ 2, 3 ], [ 2, 3 ], [ 2, 3 ] ] }

Mientras que lo que quiero es algo como esto:

{ "_id" : ObjectId("502b0e807809d79e84403606"), "name" : "fluffy", "values" : [ 2, 3 ,2 ,3, 2, 3] }

Otra cosa que noté fue que el tipo en la matriz (valores) se especifica como Número, entonces ¿la opción ''estricta'' no aseguraría que no se inserte nada que no sean Números? En este caso, se permite insertar otra matriz.



(Actualización de diciembre de 2014) Desde MongoDB2.4 debes usar:

Kitten.update({name: ''fluffy''}, {$push: {values: {$each: [2,3]}}}, {upsert:true}, function(err){ if(err){ console.log(err); }else{ console.log("Successfully added"); } });


Obsoleto vea otra solución a continuación usando $ push $ cada uno

Su ejemplo está cerca, pero desea $pushAll lugar de $push para tener cada valor agregado por separado (en lugar de insertar otra matriz en la matriz de values ):

var Kitten = db.model(''Kitten'', kittySchema); Kitten.update({name: ''fluffy''},{$pushAll: {values:[2,3]}},{upsert:true},function(err){ if(err){ console.log(err); }else{ console.log("Successfully added"); } });