如何使用要更新的项目的_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之一的subitems

我假设我会先找到该项目(足够简单),然后推送到subitems并保存该项目。因此,问题是,如何在不重复遍历其上所有内容的情况下将深度插入一个以上的层次?我可以通过其_id做到吗?

最佳答案

好吧,我想我只是想通了。有趣的是,总是在发布到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?

10-06 15:13