在a official mongoose site我发现如何通过数组中的_id删除嵌入式文档:
post.comments.id(my_id).remove();
post.save(function (err) {
// embedded comment with id `my_id` removed!
});
我很感兴趣如何更新而不是删除这个?
答案 0 :(得分:13)
看起来像这样:
YOURSCHEMA.update(
{ _id: "DocumentObjectid" , "ArrayName.id":"ArrayElementId" },
{ $set:{ "ArrayName.$.TheParameter":"newValue" } },
{ upsert: true },
function(err){
}
);
在这个例子中,我正在搜索一个带有id参数的元素,但它可能是objectId类型的实际_id参数。
答案 1 :(得分:11)
你可以做到
var comment = post.comments.id(my_id);
comment.author = 'Bruce Wayne';
post.save(function (err) {
// emmbeded comment with author updated
});
答案 2 :(得分:0)
更新到处理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!');
});