#node.js #database #mongodb #mongoose
#node.js #База данных #mongodb #мангуст
Вопрос:
Мои документы следующие.
{
"order_id" : "1",
"payment_status" : false,
"items" : [
{
"item_id" : 1,
"payment_status" : false,
},
{
"item_id" : 2,
"payment_status" : false,
},
{
"item_id" : 3,
"payment_status" : false,
},
]
}
Мне нужно обновить поля payment_status
для {"order_id":1}
и {"item_id" : 1}
и {"item_id" : 3}
. Кроме того, мне нужно обновить то же самое оптом для соответствия условиям. Возможно ли это в мангусте?
Ответ №1:
Вы хотите использовать $arrayFilters следующим образом:
db.collection.updateMany({
"order_id": "1"
},
{
"$set": {
"items.$[item].payment_status": true
}
},
{
arrayFilters: [
{
"item.item_id": {
$in: [
1,
3
]
}
}
]
})
Комментарии:
1. Спасибо. Похоже, он работает в Mongo Playground. Я проверю то же самое в своем коде и скоро опубликую обновление