#arrays #mongodb #mongoose #mongodb-query
Вопрос:
{
"_id": "100",
"menu": [
{
"type": "1",
"isenabled": true,
"items": [
{
"key": "activity",
"enabled": true,
"criteria": [
{
"key": "account",
"value": [
"active"
],
"isExclude": false
}
],
"eligible": [
"QA",
"DE"
],
"isItem": false
}
]
}
}
У меня есть следующие типы документов в коллекции.
Здесь я хотел определить подходящее значение, например, везде, где есть ТОЛЬКО «QA», «DE», нам нужно добавить несколько дополнительных значений.
Как мы можем сделать это в нескольких документах одновременно.
"eligible": [
"QA",
"DE"
]
Комментарии:
1. каков ваш ожидаемый результат
Ответ №1:
используйте $push
db.collection.update({},
{
$push: {
"menu.$[m].items.$[i].eligible": "US"
}
},
{
arrayFilters: [
{
"m.type": "1"
},
{
"i.eligible": [
"QA",
"DE"
]
}
],
multi: true
})
Комментарии:
1. Большое спасибо, Ютинг. Это работает нормально. Я попробовал приведенный ниже метод, чтобы добавить несколько ata-времени, и он также работает, как ожидалось. «menu.$ [m].items.$ [i].приемлемый»: { $each: [ «US», «WQ», «ER» ]