MongoDB- 从现有数组添加新字段

MongoDB- Add new field from existing array

我是MongoDB

的初学者

这里我提到了我的数据库模式

{
"_id" : ObjectId("5e72067973c1241068a13647"),
"client_id" : "1001",
"dependent" : [ 
    {
        "dependent_name" : "asdsa",
        "dependent_id" : "DE100"
    }, 
    {
        "dependent_name" : "fdggd",
        "dependent_id" : "DE101"
    }
  ]
}

我想根据 client_iddependent_id

添加新字段

这里我提到了我的查询但是无法得到我预期的结果

 db.collection.update({"client_id" : "1001","dependent.dependent_id":"DE101"}, {"$push": {"reason":"expired"}})

我是预期结果

 {
"_id" : ObjectId("5e72067973c1241068a13647"),
"client_id" : "1001",
"dependent" : [ 
    {
        "dependent_name" : "asdsa",
        "dependent_id" : "DE100"
    }, 
    {
        "dependent_name" : "fdggd",
        "dependent_id" : "DE101",
        "reason":"expired"
    }
  ]
}

所以有人帮我解决这个问题

由于我也是 mongodb 的新手,正如我所尝试的,我可以给你建议更新整个文档或替换它。
两种方式我都试过了,查询如下。
更新

db.updateColl.update({ 'dependent.dependent_id': 'DE101' },
    {
        $set: {
            "dependent": [
                {
                    "dependent_name": "asdsa",
                    "dependent_id": "DE100"
                },
                {
                    "dependent_name": "fdggd",
                    "dependent_id": "DE101",
                    "reason": "expired"
                }
            ]
        }
    });  

替换

db.updateColl.replaceOne({ 'dependent.dependent_id': 'DE101' }, {
    "dependent": [
        {
            "dependent_name": "asdsa",
            "dependent_id": "DE100"
        },
        {
            "dependent_name": "fdggd",
            "dependent_id": "DE101",
            "reason": "expired"
        }
    ]
})  

说不定能帮到你。如果有任何关于它的建议欢迎。

db.collection.update({"client_id" : "1001","dependent.dependent_id":"DE101"}, 
{$set:
{"dependent.$.reason":"expired"}})

试试这个对我有用 $