我有一个看起来像这样的对象。
_id: objectId,
vip:
[
{
uid:{type: Schema.Types.ObjectId, ref: 'User'},
time:Date,
paid:{type:Boolean,default:false}
}
]
我的目标是通过在mongoose node.js中提供uid数组来将vip。$。paid标记为true
我知道用一个uid参数更新一个文档就是这样
User.findOneAndUpdate({_id:id,"vip.$.uid":uid}, {$set: {"vip.$.paid" : true}})
但是给定一组uid,更新嵌套文档就像
for (uid in uids){
User.findOneAndUpdate({_id:id,"vip.$.uid":uid}, {$set: {"vip.$.paid" : true}})
}
但这还不够有效,我将如何实现呢?
答案 0 :(得分:1)
您可以在mongodb中使用$in operator来完成此操作。
示例:
User.findOneAndUpdate({_id: id, "vip.$.uid": {$in: uids}}, {$set: {"vip.$.paid" : true}})