У меня есть документы со следующей структурой:
{
_id: ObjectId(),
"subjects": [
{
"name": "math",
"first_try": {
"passed": true
},
"second_try": {
"passed": false
},
"third_try": {
"passed": false
},
"fourth_try": {
"passed": false
}
}
]
}
Там есть несколько таких предметов. Пожалуйста, не предлагайте менять структуру данных и т. Д. c. - это поддельная структура данных, созданная только для этого вопроса (не может иметь общие имена, но структура одинакова).
Для каждого из этих предметов у меня всегда есть эти 4 ключа: "first_try", "second_try ", ...," third_try ". Некоторые из них «пройдены», некоторые - нет.
Для каждого предмета я хочу установить first_try.passed: true
, если не было других пропущенных попыток. Если, например, third_try.passed:true
, я не должен обновлять first_try.
Я пытался выполнить некоторые условия aggregate
, включая elemMatch
, чтобы найти элементы для обновления, но он выглядит ужасно и не работает, как я ожидал.
Возможно ли обработать этот случай с помощью одного updateMany
запроса?