Mongoose.js:如何通过id更新深层嵌入文档?

时间:2012-02-15 19:39:57

标签: node.js mongodb express mongoose

如何使用我要更新的项目的_id来更新多个级别的嵌入式文档?

例如,如果我的模型文件中有以下内容:

var Subitems = new Schema({
  "title": String,
  "body": String
)}

var Items = new Schema({
  "title": String,
  "subitems": [Subitems]
)};

var Projects = new Schema({
  "title": String,
  "description": String,
  "items": [Items]
});

var exports = module.exports = mongoose.model('Project', Projects);

我如何更新body我认识subitems元素_id的{​​{1}}之一?{/ p>

我假设我首先找到项目(足够简单),然后推送到subitems并保存项目。所以问题是,如何在不必迭代上面的所有内容的情况下推动多个深度嵌入?我可以通过其subitems吗?

1 个答案:

答案 0 :(得分:2)

好的,我想我只是想通了。有趣的是,在发布到SO之后总会发生这种情况:)

这就是我所做的,让我知道是否有更好/不同的方式:

var myitem  = req.project.items.id(item_id);
myitem.body = req.body.item.body;

req.project.save(function (err){
  //woohoo! updated the embedded doc with the new values!      
});

我通过遵循此SO帖子中所选答案中的建议来解决这个问题: How to update embedded document in mongoose?