【问题标题】:Mongoose.js: How can I update a deep embedded document by its id?Mongoose.js:如何通过 id 更新深层嵌入文档?
【发布时间】:2017-07-18 00:00:25
【问题描述】:

如何使用我希望更新的项目的_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);

如果我知道subitems 元素的_id,我将如何更新我的subitems 之一的body

我假设我会先找到项目(很简单),然后推送到subitems 并保存项目。所以问题是,你如何在不必遍历其之上的所有内容的情况下推动不止一层的深度嵌入?我可以通过它的_id 来做吗?

【问题讨论】:

  • 这个问题回答我的!谢谢! :3

标签: node.js mongodb express mongoose


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 2013-06-12
    • 2016-04-01
    • 1970-01-01
    • 2015-07-30
    相关资源
    最近更新 更多