Учитывая, что:
дБ:
{
id:"112",
val1: {val:""},
val2: {val:"123"},
}
Я хотел бы запустить скрипт, который обновляет новое поле в соответствии с результатом агрегации. Результат равен true, если одно из значений (val1, val2) пусто
Ниже приведено то, что я сделал с агрегацией, а затем я хотел бы перейти к for и обновить все строки:
db.valTest.aggregate(
[{
"$addFields": {
"val.selected": {
'$or': [{
'val1.val': ''
}, {
'val2.val': ''
}]
}
}
},
{
"$group": {
"_id": "$_id",
"id": {
"$first": "$id"
},
"value": {
"$first": "val1.val"
},
"result": {
"$push": {
"val": "val1.val",
"selected": "val.selected"
}
}
}
}
]
)
Но я не получаю правильный результат. Я хотел бы получить результат как:
{
id:"112",
val1: {val:""},
val2: {val:"123"},
result: true
},
{
id:"114",
val1: {val:"4545"},
val2: {val:"123"},
result: false
}
В настоящее время я получаю следующую ошибку:
"message" : "FieldPath field names may not contain '.'.",