Mongo - 更新文档时使用另一个字段的结果更新一个字段
Posted
技术标签:
【中文标题】Mongo - 更新文档时使用另一个字段的结果更新一个字段【英文标题】:Mongo - update a field with result of another field when a document is updated 【发布时间】:2017-11-10 10:51:20 【问题描述】:我正在使用 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() 函数)。
如何在对性能影响较小的情况下做到这一点?
【问题讨论】:
【参考方案1】:您可以使用预保存挂钩进行计算:
schema.pre('save', function(next)
this.result = this.num1 / this.num2;
next();
);
...“schema”是您的 Mongoose 架构。
那么当你更新 num1 或 num2 时,会计算并保存结果。
【讨论】:
以上是关于Mongo - 更新文档时使用另一个字段的结果更新一个字段的主要内容,如果未能解决你的问题,请参考以下文章