我正在使用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)。
如何以较低的性能影响来实现?
答案 0 :(得分:1)
您可以使用预保存挂钩进行计算:
schema.pre('save', function(next) {
this.result = this.num1 / this.num2;
next();
});
...其中'架构'是你的Mongoose架构。
然后当您更新num1或num2时,将计算并保存结果。