我不能同时使用$set运算符和$inc运算符,只有一个在我的情况下有效


const User = require('./model.js)
const result = await User.updateMany({_id:{$in:team}},{ $set: { current_level_status : 'incomplete' , user_helper_status : false,user_admin_status : false }},{$inc:{level_number:1}});
console.log(result)

我正在使用猫鼬集运算符和增量运算符一起使用

mongoose"updateMany"不适用于此运算符team字段包含对象id数组

https://mongoosejs.com/docs/api.html#model_Model.updateMany

  1. 过滤器«对象»
  2. 文档«对象»
  3. [选项]«对象»可选,请参阅Query.protype.setOptions((

问题是您在第三个参数中传递$inc,而不是将其与第二个参数中的同一对象连接。


更改

const result = await User.updateMany(
{_id:{$in:team}}, // Parameter 1
{$set: { current_level_status : 'incomplete' , user_helper_status : false,user_admin_status : false }}, // Parameter 2
{$inc:{level_number:1}} // Parameter 3
);

const result = await User.updateMany(
{_id:{$in:team}}, // Parameter 1
{ // Parameter 2
$set: { current_level_status : 'incomplete' , user_helper_status : false,user_admin_status : false }
$inc: {level_number:1}
}
);

演示-https://mongoplayground.net/p/7zHcJy_sh-H

$inc应该在update()函数的第二个参数中,但在$set:之外

User.updateMany({ _id: { $in: team } }, { 
$set: { 
current_level_status: 'incomplete',
user_helper_status: false,
user_admin_status : false 
},
$inc: { level_number: 1 }
});

相关内容

最新更新