更新文档mongodb(v4)中的部分列表



我在文档中有一个项目列表,每个项目都有一个名为for_sale的布尔字段。

我有_iditem_id的列表,我想更新这个_id,所有的item_id都有for_sale = true

比方说我想改变的item_id是[1,3]

例如:

{
"_id" : ObjectId("598098245078027348"),
"items" : [
{
"item_id": 1
"item_name" : "my_item_one",
"price" : 10,
"for_sale": false
},
{
"item_id": 2
"item_name" : "my_item_two",
"price" : 20
"for_sale": false
},
{
"item_id": 3
"item_name" : "my_item_three",
"price" : 30
"for_sale": false
}
]
}

我想要的结果:

{
"_id" : ObjectId("598098245078027348"),
"items" : [
{
"item_id": 1
"item_name" : "my_item_one",
"price" : 10,
"for_sale": true
},
{
"item_id": 2
"item_name" : "my_item_two",
"price" : 20
"for_sale": false
},
{
"item_id": 3
"item_name" : "my_item_three",
"price" : 30
"for_sale": true
}
]
}

我该怎么做?

您可以使用$[]更新操作来实现这一点。

下面的更新查询是您正在寻找的

db.test.updateOne({
"_id": ObjectId("598098245078027348")
}, {
"$set": {
"items.$[elem].for_sale": true
}
}, {
arrayFilters: [
{
"elem.item_id": {"$in": [1, 3]}
}
]
})

最新更新