MongoDB UpdateMany

MongoDB UpdateMany

我需要更新 mongo 中的各个字段以创建新字段。示例:

db.paymentTransaction.updateOne(
    {status: "PARTIALLY_REFUNDED"},
    {amount: EXISTS} 
    {
        $set: {
            "amountRefundRemaining": {
                FIELD_B  - FIELD_A
            }
        }
    }
)

我需要创建字段 amountRefundRemaining。但是我需要用 Field_B 减去 Field_A 的结果来填充这个新字段。但我只需要在 status=PARTIALLY_REFUNDED 和 amount 存在的地方执行此操作

我正在使用 mongoDB 4.4。 有什么想法吗?

查询

  • 如果 status=PARTIALLY_REFUNDEDamount exists
  • 添加值为 FIELD_B - FIELD_A
  • 的字段 amountRefundRemaining

*管道更新需要 MongoDB >= 4.2

PlayMongo

update(
{"$and": 
 [{"status": {"$eq": "PARTIALLY_REFUNDED"}}, {"amount": {"$exists": true}}]},
[{"$set": 
   {"amountRefundRemaining": {"$subtract": ["$FIELD_B", "$FIELD_A"]}}}],
{"multi": true})