如何使用另一个字段的值更新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我有一个减少分钟数的函数