猫鼬。更新数组中的嵌入文档

时间:2012-01-21 19:16:13

标签: node.js mongoose

a official mongoose site我发现如何通过数组中的_id删除嵌入式文档:

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

我很感兴趣如何更新而不是删除这个?

3 个答案:

答案 0 :(得分:13)

看起来像这样:

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

        }
    );

在这个例子中,我正在搜索一个带有id参数的元素,但它可能是objectId类型的实际_id参数。

另请参阅:MongooseJS Doc - Updating SetSimilar SO question

答案 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!');
});