我已经阅读过mongoose文档了,我仍然无法弄清楚如何更新文档。
我使用node,express和mongodb与mongoose。
这是我的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”
nodes._id:4f7a92554ad893f322000009 title:这是节点1到标题:这是一个新标题?
答案 0 :(得分: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限制)。