Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

i cannot use $set operator and $inc operator together only one is working in my case

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)

i am using mongoose set operator and increment operator together

mongoose 'updateMany' is not working with this operators team field contains array of object ids

like image 648
Jewel K Wilson Avatar asked Oct 16 '25 23:10

Jewel K Wilson


1 Answers

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

  1. filter «Object»
  2. doc «Object»
  3. [options] «Object» optional see Query.prototype.setOptions()

The problem is you're passing $inc in the 3rd parameter instead of joining it with same object inside 2nd parameter.


Change

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
);

To

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}
 }
);

Demo - https://mongoplayground.net/p/7zHcJy_sh-H

like image 178
Tushar Gupta - curioustushar Avatar answered Oct 19 '25 13:10

Tushar Gupta - curioustushar



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!