Как обновить элемент массива в документе mongodb?

Этот запрос успешно обновляется:

db.product.updateMany({"Rno":{$in:["111","222","333"]}},{$set:{"subjwmarks.maths":99}});

Перед обновлением:

{
    "_id" : ObjectId("5a572886964d881dab9f1f55"),
    "Rno" : "111",
    "stuname" : "sravan",
    "subjwmarks" : [ 
        {
            "maths" : 88.0,
            "english" : 99.0,
            "Clang" : 97.0
        }
    ],
    "total" : 284.0,
    "grade" : "A",
    "organization" : "Tata"
};

После обновления запрос возвращает это значение:

{
    "_id" : ObjectId("5a572886964d881dab9f1f55"),
    "Rno" : "111",
    "stuname" : "sravan",
    "subjwmarks" : [ 
        {
            "maths" : 99,
        }
    ],
    "total" : 284.0,
    "grade" : "A",
    "organization" : "Tata"
};

Значение должно быть:

{
    "_id" : ObjectId("5a572886964d881dab9f1f55"),
    "Rno" : "111",
    "stuname" : "sravan",
    "subjwmarks" : [ 
        {
            "maths" : 99,
            "english" : 99.0,
            "Clang" : 97.0
        }
    ],
    "total" : 284.0,
    "grade" : "A",
    "organization" : "Tata"
}

Но другие элементы этого массива были удалены.

Кто-нибудь может подсказать, как решить эту проблему?

1 ответ

db.product.updateMany({"Rno":{$in:["111","222","333"]}, subjwmarks:{ $exists: true}},{$set:{"subjwmarks.$.maths":100}});

https://docs.mongodb.com/manual/reference/operator/update/positional/

Note: subjwmarks must be in query part
Другие вопросы по тегам