用猫鼬中的id数组更新嵌套数组

时间:2019-07-15 04:27:59

标签: node.js mongoose mongoose-schema

我有一个看起来像这样的对象。

_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}})
   }

但这还不够有效,我将如何实现呢?

1 个答案:

答案 0 :(得分:1)

您可以在mongodb中使用$in operator来完成此操作。

示例:

User.findOneAndUpdate({_id: id, "vip.$.uid": {$in: uids}}, {$set: {"vip.$.paid" :  true}})