在Mongo中为$ set的不确定长度添加条件检查

时间:2018-04-05 21:55:43

标签: javascript node.js mongodb

我有一个函数可以更新MongoDB集合中数组内对象的字段,当该数组元素的subscription_id匹配时。代码如下所示:

  if (mongoArrSubscription) {
    try {
      db.collection('clients').updateMany(
       { "subscription._id": { $in: mongoArrSubscription } },
       { $set :{ "subscription.0.subscriptionEnd": lastDayOfMonth,
                 "subscription.1.subscriptionEnd": lastDayOfMonth }},
        function (err, res) {
        if (err) throw err;
        console.log(res);
      });

      res.sendStatus(200);
    } catch (e) {
      console.log(e);
    }
  }

问题在于一些"订阅"数组有一个元素,其他有两个元素。我想要做的是在$set之前添加一些条件逻辑,以确保仅当该数组元素存在时才设置值。因为现在,如果第二个数组元素不存在,这个操作将创建它,并插入一个值 - 这显然不是我想要的。

我想更好的做法是做一些forEach()循环来处理将来我们可能有两个以上数组元素的情况,虽然我不确定这会是什么样子

0 个答案:

没有答案