MongoDB - добавить новое поле из существующего массива - PullRequest
0 голосов
/ 18 марта 2020

Я новичок в MongoDB

Здесь я упомянул схему своей базы данных

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

Я хочу добавить новое поле на основе client_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"
    }
  ]
}

чтобы кто-нибудь помог мне решить эту проблему

Ответы [ 2 ]

1 голос
/ 21 марта 2020
db.collection.update({"client_id" : "1001","dependent.dependent_id":"DE101"}, 
{$set:
{"dependent.$.reason":"expired"}})

Попробуйте, это работает для меня, используя $

0 голосов
/ 19 марта 2020

Поскольку я также новичок в 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"
        }
    ]
})  

может быть, это может помочь вам. если какие-либо предложения относительно этого добро пожаловать.

...