如果满足条件,将一个字段的内容推送到另一个字段(数组) - MongoDB

Push contents of one field to another field (array) if condition is satisfied - MongoDB

这不是我要找的: Update MongoDB field using value of another field

我正在尝试将一个字段的内容复制到另一个字段(恰好是一个数组),如果条件计算结果为真。

文档初始状态:

{
   _id: 1234
   currentNumber: 5
   magicNumbers: [3, 7, 9, 11, 15]
}

如果 currentNumber % 2 == 1,我想将 currentNumber 的内容复制到 magicNumbers。这在最新的 MongoDB 版本中可行吗?我正在使用 Nodejs 驱动程序。

最终文档状态:

{
   _id: 1234
   currentNumber: 5
   magicNumbers: [3, 7, 9, 11, 15, 5]
}

我想一次完成此操作,以节省访问数据库的次数。

db.collection.update({
  $expr: {
    $eq: [ { $mod: [ "$currentNumber", 2 ] }, 1 ]
  }
},
[
  {
    $set: {
      magicNumbers: {
        $concatArrays: [ "$magicNumbers", [ "$currentNumber" ] ]
      }
    }
  }
],
{
  "multi": true
})

mongoplayground