Tengo un objeto que representa una lección.
{ "_id": "62ad8ac4a5523541d78df217", "lessonID": "35d02fc5-94dd-48e7-a315-7dcea6ac6806", "teachers": [ "629232d2fc8fa8646b21cf3d" ], "students": [ "62924d0a6055ad4d2533577b" ], "subject": "English", "start": 1655515800000, "end": 1655517600000, "roomNumber": "3", "venue": "Elmwood Park", "attendance": [ "62924d0a6055ad4d2533577b" ], "paid": false, "__v": 0 },lo que estoy tratando de hacer es encontrar todos los documentos con el mismo "ID de lección" y actualizar "inicio" y "fin" (marcas de tiempo).
Me gustaría incrementar o disminuir los valores en una cierta cantidad en cada documento
He estado sentado en él por un tiempo y pensé en hacer esto:
aunque suena extremadamente ineficiente (y provoca duplicación o pérdida de datos si alguno de los pasos falla)... debe haber una mejor manera de hacerlo.
Como sugirió @Gibbs, simplemente use $inc :
db.collection.update({ "lessonID": "35d02fc5-94dd-48e7-a315-7dcea6ac6806" }, { $inc: {start: amountStartInc, end: amountEndInc} })Vea cómo funciona en el ejemplo del patio de recreo