MongoDB updateOne子数组-$ elemMatch在arrayFilter中不起作用

时间:2020-11-05 00:29:18

标签: mongodb mongodb-query

我想通过文档的子数组中的id更新特定元素。

我使用arrayFilters。如果我使用{"members1.id":"311129357362135041"}在arrayFilter中直接指定ID,则会按预期对其进行修改:

> db.guilds.updateOne({id:"561235799233003551"}, {$set: {"members.$[members1]": {test:"hi"}}}, {upsert: true, arrayFilters: [{"members1.id":"311129357362135041"}]})
> { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

但是如果我尝试将元素与{"members1":{$elemMatch: {id:"311129357362135041"}}}匹配,则不会更新/查找元素:

> db.guilds.updateOne({id:"561235799233003551"}, {$set: {"members.$[members1]": {id:"311129357362135041"}}}, {upsert: true, arrayFilters: [{"members1":{$elemMatch: {id:"311129357362135041"}}}]})
> { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 0 }

那是为什么?还是有更好的解决方案?

0 个答案:

没有答案