我正在尝试更新多个数组元素。我的数据如下:
{
"_id" : ObjectId("5b1623343aeefb2a8973e26a"),
"userId" : ObjectId("5acf0e0e6d57ed7a22d16739"),
"previous" : [
{
"providerId" : ObjectId("5acf304b995ea23a707b58e5"),
"_id" : ObjectId("5b1623343aeefb2a8973e286"),
"isBlocked" : true,
},
{
"providerId" : ObjectId("5acf304b995ea23a707b58e5"),
"_id" : ObjectId("5b1623343aeefb2a8973e285"),
"isBlocked" : true,
},
{
"providerId" : ObjectId("5acf304b995ea23a707b58e5"),
"_id" : ObjectId("5b1623343aeefb2a8973e284"),
"isBlocked" : true,
},
我需要将isBlocked Status更新为false,其中providerId是相同的 我已经按照以下帖子中的@Neil给出了步骤:
How to Update Multiple Array Elements in mongodb
我在这里分享我的疑问:
db.getCollection("collectionName").update(
{"userId" : ObjectId("5acf0e0e6d57ed7a22d16739")},
{$set:{"previous.$[elem].isBlocked":false}},
{
arrayFilters:[{"elem.providerId":ObjectId("5acf304b995ea23a707b58e5")}]
}
)
如果我正在运行此查询mongo shell,那么它工作正常但它在我的代码中不起作用。
我使用的是MongoDB version 3.6
,而我的猫鼬版本是mongoose@4.13.9