我有一个MongoDocument X,它有一些MongoEmbeddedDocument Y的实例。
我现在想在我的X系列中添加一个额外的embeddeddocument Y.我尝试过以下代码:
var mongo = db.x.findOne();
mongo.y = { title:"test" }
db.x.save(mongo)
问题是这段代码将删除我所拥有的整个y嵌入式文档集合。有没有我可以添加一个而不删除现有的?
答案 0 :(得分:2)
你必须使用$push
来执行此操作:
{ $push : { field : value } }
http://www.mongodb.org/display/DOCS/Updating#Updating-%24push
答案 1 :(得分:2)
假设您使用数组存储y,您可能想要进行$ push,例如:
var mongo = db.x.findOne();
db.x.update({_id:mongo._id}, {$push:{y:{title:"test2"}}});
如果您想再次保存整个记录,可以更接近您的尝试:
var mongo = db.x.findOne();
mongo.y.push({title:"test2"});
db.x.save(mongo);
但$ push可能更好,你可以在一个更新命令中完成。