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



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

这是我的架构

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

有没有办法使用小时值更新分钟数?

从MongoDB版本4.2开始,你可以在更新中执行聚合流水线,即你可以在更新中使用某些聚合阶段/算子。所以更新部分将被包裹在[]中。

尝试以下查询:

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

在上面的查询中$set我们使用别名$addFields聚合阶段$multiply聚合运算符到多个现有hours字段,其中包含 60 并将值存储在minutes字段中。

注意:以防万一.updateMany()抛出任何错误,尝试使用{ multi : true }选项.update()相同的操作。

最新更新