如何更新猫鼬嵌套数组文档 [英] How to update mongoose nested array document

查看:48
本文介绍了如何更新猫鼬嵌套数组文档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道这个问题是重复的,但我不知道为什么我被困住了

I know the question is duplicate but I dont know Why I am stuck

问题:

如何使用_idrequirement.update._id(如果需要,请使用requirement._id)查找来编辑"requirement.$.update"数组文档

How can I edit "requirement.$.update" array documents, using find by _id and requirement.update._id (and if needed requirement._id )

// edit version number level2
  exports.editVersionNumberPost = function(req, res){ 
    var query = {
            date: req.body.date,
            number: req.body.number,
            description: req.body.description 
        }
    Project.findOneAndUpdate({ name:  req.params.name, 
                               "requirement._id" : req.params.versionID, 
                               "requirement.update._id" : req.params.versionNumID},  
        {"$set": 
            {"requirement.$.update" :  query 
        }   
        },  { new: true }, 
        function(err, obj){})
 };

我的模式

----------------
    namr: String
    requirement:[{
        version: Number,
        update:[{
            date: Date,
            number: Number,
            description: String
        }]
    }],
--------

推荐答案

您可以在下面的查询中使用

You can use below query

db.getCollection("test").updateOne(
  { "name":  req.params.name },
  { "$set": { "requirement.$[outer].update.$[inner].number": 100000 } },
  {
    "arrayFilters": [
      { "outer._id": mongoose.Types.ObjectId(req.params.versionID) },
      { "inner._id": mongoose.Types.ObjectId(req.params.versionNumID) }
    ]
  }
)

这篇关于如何更新猫鼬嵌套数组文档的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆