2012-03-23 6 views
3

J'ai un MongoDocument X qui a certains cas de MongoEmbeddedDocument Y.MongoDB Ajouter un document supplémentaire intégré au lieu de l'écraser

Je veux maintenant ajouter un embeddeddocument supplémentaire Y à ma collection X. J'ai essayé le code suivant:

var mongo = db.x.findOne(); 
mongo.y = { title:"test" } 
db.x.save(mongo) 

Le problème est que ce morceau de code supprimé toute ma collection de y embeddeddocuments que j'avais. Est-il possible que je puisse en ajouter un sans supprimer les existants?

+0

Votre tableau est-il un tableau? –

Répondre

2

En supposant que vous utilisez un tableau pour stocker votre y, vous voudrez probablement faire un push $, quelque chose comme:

var mongo = db.x.findOne(); 
db.x.update({_id:mongo._id}, {$push:{y:{title:"test2"}}}); 

Si vous souhaitez enregistrer l'ensemble du dossier à nouveau, vous pouvez le faire plus près de ce que vous essayiez:

var mongo = db.x.findOne(); 
mongo.y.push({title:"test2"}); 
db.x.save(mongo); 

Mais $ push est probablement meilleur, et vous pouvez le faire dans une seule commande de mise à jour.

Questions connexes