我有一个函数可以更新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()
循环来处理将来我们可能有两个以上数组元素的情况,虽然我不确定这会是什么样子