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

如何使用另一个字段的值更新MongoDB字段,mongodb,mongoose,mongodb-query,aggregation-framework,Mongodb,Mongoose,Mongodb Query,Aggregation Framework,是否可以使用另一个字段的值更新该字段 这是我的模式 var timeSchema = new mongoose.Schema({ hours: Number, minutes: Number }); module.exports = mongoose.model("Time", timeSchema); 当分钟变为0时,我希望分钟的值为小时*60 这是我的密码 Time.updateMany({}, {minutes: hours * 60}); 我的代码抛出一个错误,表示

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

这是我的模式

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

module.exports = mongoose.model("Time", timeSchema);
当分钟变为0时,我希望分钟的值为小时*60

这是我的密码

Time.updateMany({}, {minutes: hours * 60});
我的代码抛出一个错误,表示未定义
小时


是否有可能使用小时值更新分钟数?

从MongoDB版本
4.2开始,您可以在更新中执行聚合管道,即:;您可以在中使用某些聚合阶段/运算符。所以更新部分将被包装在
[]

请尝试以下查询:

Time.updateMany({}, [{$set: {minutes: {$multiply : ['$hours', 60 ]}}}])
在上面的查询中,我们将聚合和聚合运算符的
$set
别名
$addFields
阶段用于多个现有的
小时数
字段,并将值存储在
分钟数
字段中


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

这是否回答了您的问题?事实并非如此work@JeromeBravo:什么不起作用?您尝试过什么&DB版本?分钟数变为0是什么意思?代码:Time.updateMany({},{$set:{minutes:$hours*60});它仍然说$hours没有定义。我的MongoDB版本是4.2。5@whoami我有一个减少分钟数的函数