我有一个数组,其中有多个对象(可以有两个以上)。现在我需要更新对象中的一个元素(change verified to true)(例如,一个method =“app”的对象)。如果该对象还不存在,则需要重新创建它。有没有办法用Mongoose处理这个问题?
我找到了更新的解决方案,但在没有对象存在的情况下无法解决问题
const result = await User.updateOne({email},
{ $set: { "multifactors.$[elem].verified" : true } },
{ arrayFilters: [ { "elem.method": "app" } ] }
)
1条答案
按热度按时间iqjalb3h1#
这是一种方法,使用流水线更新。
a.使用$filter和$size检查数组是否包含所需的对象。
B.如果存在,则更新匹配的object $map。
c.否则,将新对象附加至数组。
Playground link.