如何使用另一个字段的值更新MongoDB字段

时间:2020-05-11 04:05:35

标签: mongodb mongoose mongodb-query aggregation-framework

是否可以使用另一个字段的值来更新一个字段?

这是我的模式

var timeSchema = new mongoose.Schema({
    hours: Number,
    minutes: Number
});

module.exports = mongoose.model("Time", timeSchema);

我希望分钟数为小时* 60,即分钟数变为0

这是我的代码

Time.updateMany({}, {minutes: hours * 60});

我的代码抛出一个错误,内容为hours is not defined

是否可以使用小时值更新分钟?

1 个答案:

答案 0 :(得分:1)

从MongoDB版本4.2开始,您可以在更新中执行聚合管道,即;您可以在updates中利用某些聚合阶段/运算符。因此,更新部分将包裹在[]中。

请尝试以下查询:

Time.updateMany({}, [{$set: {minutes: {$multiply : ['$hours', 60 ]}}}])

在上述查询中,我们使用了$set别名$addFields的聚合阶段和$multiply聚合运算符将多个现有的hours字段设置为60,并将值存储在{ {1}}字段。

注意::以防万一minutes引发任何错误,请尝试使用带有.updateMany()选项的.update()