根据该文档中的另一个字段更新所有文档中的所有字段

时间:2019-11-07 02:35:53

标签: javascript mongodb mongoose mongoose-schema

我的数据库中有学生证件。每个文档都是一名学生,并且具有字段amountOwedtuition

我正在尝试更新使amountOwed等于amountOwed + tuition.的当前值

我已经考虑过使用 .find 查询来获取所有学生文档,遍历每个文档并更新数据库。

我还研究了mongo文档中的 $set(aggregation) $addFields(aggregation) ,但是我不确定是否可以使用这是我想做的。

示例文档:

{"studentName" : "Student1",

 "amountOwed" : 100,

 "tuition" : 100

},

{"studentName" : "Student2",

 "amountOwed" : 0,

 "tuition" : 500

}

输出应为:

{"studentName" : "Student1",

 "amountOwed" : 200,

 "tuition" : 100

},

{"studentName" : "Student2",

 "amountOwed" : 500,

 "tuition" : 500

}

在一个数据库查询中有没有办法做到这一切?

也许使用updateMany

1 个答案:

答案 0 :(得分:0)

要添加值,可以使用Mongo Aggregation Query的$add表达式。

尝试使用查询:

db.collection.aggregate([
  {
    $project: {
      studentName: 1,
      tuition: 1,
      _id: 0,
      amountOwed: {
        $add: [
          "$amountOwed",
          "$tuition"
        ]
      }
    }
  }
])