是否可以使用另一个字段的值更新一个字段?
这是我的架构
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()
相同的操作。