Mongo - 在更新文档时更新包含另一个字段结果的字段

时间:2017-06-08 15:59:34

标签: node.js mongodb mongoose

我正在使用mongoose来管理我的mongoDB集合。 我有一个包含两个数字字段的集合。我想设置另一个字段,每次更新其中一个字段时将这两个字段分开。

让我们坐下来这是我的mongo系列:

{
  id: 1,
  num1: 100,
  num2: 50,
  result: 2
},
{
  id: 2,
  num1: 200,
  num2: 10,
  result: 20
},
{
  id: 1,
  num1: 40,
  num2: 5,
  result: 8
}

现在,更新了ID为2的项目,并将num1设置为50.我想重新计算并使用新的正确值(10)设置结果字段。

(对于更新项目,我使用bulk.find()。upsert()。updateOne()funciton)。

如何以较低的性能影响来实现?

1 个答案:

答案 0 :(得分:1)

您可以使用预保存挂钩进行计算:

schema.pre('save', function(next) {
    this.result = this.num1 / this.num2;
    next();
});

...其中'架构'是你的Mongoose架构。

然后当您更新num1或num2时,将计算并保存结果。