Necesito incrementar el campo del contador siempre que sea inferior a 500; de lo contrario, reinicie el contador a cero.
Aquí está mi fragmento:
StudentInfo.findOneAndUpdate( { studId: SID }, **{ $inc: { counter: 1 } },** (err, studInfo) => { if (err || !studInfo) { console.log(err); } else { console.log(${JSON.stringify(studInfo)); } }, );¿Cómo puedo hacerlo en una sola llamada de actualización?
Puedes hacerlo con el marco de agregación:
$cond con $lt - Para comprobar si el valor actual del contador es inferior a 500$sum : para aumentar el valor actual del contador en 1 si la condición es verdadera db.collection.update({ "key": 1 }, [ { "$set": { "counter": { $cond: { if: { $lt: [ "$counter", 500 ] }, then: { $sum: [ "$counter", 1 ] }, else: 0 } } } } ], { "multi": false, "upsert": false })