mongoose. mise à jour du document incorporé dans un tableau

Dans un site officiel sur les mongooses, j’ai découvert comment supprimer un document incorporé par _id dans un tableau:

post.comments.id(my_id).remove(); post.save(function (err) { // embedded comment with id `my_id` removed! }); 

Je suis intéressé, comment puis-je mettre à jour au lieu de supprimer celui-ci?

Vous pourriez faire

 var comment = post.comments.id(my_id); comment.author = 'Bruce Wayne'; post.save(function (err) { // emmbeded comment with author updated }); 

Cela devrait ressembler à quelque chose comme ça:

  YOURSCHEMA.update( { _id: "DocumentObjectid" , "ArrayName.id":"ArrayElementId" }, { $set:{ "ArrayName.$.TheParameter":"newValue" } }, { upsert: true }, function(err){ } ); 

Dans cet exemple, je cherche un élément avec un paramètre id, mais il peut s’agir du paramètre _id actuel de type objectId.

Voir aussi: MongooseJS Doc – Ensemble de mise à jour et question SO similaire

Mise à jour des derniers documents sur le traitement des sous-documents dans Mongoose. http://mongoosejs.com/docs/subdocs.html

 var Parent = mongoose.model('Parent'); var parent = new Parent; // create a comment parent.children.push({ name: 'Liesl' }); var subdoc = parent.children[0]; console.log(subdoc) // { _id: '501d86090d371bab2c0341c5', name: 'Liesl' } subdoc.isNew; // true parent.save(function (err) { if (err) return handleError(err) console.log('Success!'); });