如何使用mongoose更新,并更新嵌入文档?

问题描述:

我已经阅读过猫鼬文档,但我仍然无法弄清楚如何更新文档。如何使用mongoose更新,并更新嵌入文档?

我使用节点,表达和mongodb与猫鼬。

这是我的MongoDB集合...

{ "title" : "this is a title", 
    "_id" : ObjectId("4f7a92554ad893f322000004"), 
    "nodes" : [ 
       { "title" : "this is node 1", 
        "_id" : ObjectId("4f7a92554ad893f322000009") }, 
       { "title" : "this is node 2", 
        "_id" : ObjectId("4f7a92554ad893f322000008") }, 
       { "title" : "this is node 3", 
        "_id" : ObjectId("4f7a92554ad893f322000007") }, 
       { "title" : "this is node 4", 
        "_id" : ObjectId("4f7a92554ad893f322000006") }, 
       { "title" : "this is node 5", 
        "_id" : ObjectId("4f7a92554ad893f322000005") } 
      ] 
} 

如何更新节点嵌入文档???

app.put('/api/paper/:pid/:nid', function(req, res) { 
    var PaperModel = mongoose.model('papers', Paper); 
    PaperModel.update({_id: req.params.pid, 'nodes._id': req.params.nid}, {title: 'this   is a new node title'}, function(error, result) { 
     console.dir(result); 
    }); 
}); 

它不工作。

如何更新嵌入阵列“节点”

nodes._id:4f7a92554ad893f322000009标题:这是节点1到标题:这是一个新的称号?

PaperModel.update(
    {_id: req.params.pid, 'nodes._id': req.params.nid} 
    , { $set: {'nodes.$.title': 'this is a new node title'}} 
    , function(error, result) { 
     console.dir(result); 
    } 
); 

请注意,这只能一次更新一个子文档(mongodb限制)。