2012-04-03 114 views
1

我已經閱讀過貓鼬文檔,但我仍然無法弄清楚如何更新文檔。如何使用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到標題:這是一個新的稱號?

回答

7
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限制)。

相關問題