猫鼬更新字段,如果另一个数组字段的大小大于5

时间:2020-05-05 10:20:15

标签: mongodb mongoose mongodb-query mongoose-schema

我是Mongoose的新手,我无法找到实现特定更新查询的方法。 我有下一个模式:

{
  usersJoined: [{
    type: String
  }],
  status: {
    type: Number,
    default: 0
  },
}

当usersJoined数组的大小为5时,我想将状态更新为1。 我正在使用以下查询来查询正确的文档:

Model.findOneAndUpdate(
  {
    status: 0,
    usersJoined: {$ne: user}
  },
  {
    $push: {usersJoined: user}
  }
);

1 个答案:

答案 0 :(得分:0)

我要在用户人数增加时将状态更新为1 数组是5

使用数组$size运算符过滤记录,findOneAndUpdate方法将更新第一个匹配的记录。请参阅文档findOneAndUpdate。如果这不适合您的用例,请检查其他update methods

db.collection.findOneAndUpdate(
    {"userJoined": {"$size": 5}},
    {$set: {"status": 1}},
    {returnNewDocument: true} //if true, returns the updated document.
);

Example