Tengo una consulta o secuencia de comandos mongodb que actualizará todos los proyectos del equipo de empleados y cambiará el proyecto del equipo a "DUMMY" solo cuando el proyecto actual sea "bbb234". Obtuve un comportamiento extraño ya que hay algunos proyectos (bbb234) que no se cambiaron a "DUMMY". No estoy seguro si mi condición es incorrecta, pero solo se modifican los primeros 10 o 12 registros. Solo los registros tardíos no se modifican incluso cuando el proyecto del equipo es "bbb234".
Para comprender lo que quise decir, consulte el siguiente script.
db.getCollection('employees').find( { "teams.project" : { $in: [ "aaa123", "bbb234" ] } } ).forEach(e => { // skip when there are no teams if (!e.teams) { return; } e.teams.forEach(team => { if (team.project === "bbb234") { team.project = 'DUMMY'; } // This is OK, it will display 'DUMMY' for all team with previous project value of `bbb234` // print(team.project); // When displaying team, the condition is `team.project === "bbb234"` is not always true // The first 10 employee records have updated team project, // while after that... the other records still show team.project = "bbb234" // print(team); }); // Update employee with the corrected/updated team project db.getCollection('employees').updateOne({"_id": e._id}, {$set: {"teams": e.teams}}); }) Cuando reviso los registros, el valor de teams.project es String. No estoy seguro de en qué parte de mi secuencia de comandos está mal o no puedo manejar la condición correctamente. Sé que esto es bastante fácil, pero no puedo entender dónde hice mal y por qué solo se actualizan/cambian los primeros registros.
Actualizar:
Intenté .toArray() pero aún recibo el mismo error/problema. Realmente encuentro esto extraño
var _employees = db.getCollection('employees').find( { "teams.project" : { $in: [ "aaa123", "bbb234" ] } } ).toArray(); _employees .forEach(e => { // skip when there are no teams if (!e.teams) { return; } e.teams.forEach(team => { if (team.project === "bbb234") { team.project = 'DUMMY'; } // Still, this is OK // print(team.project); // Same issue as with the previous query/script // print(team); }); // Update employee with the corrected/updated team project db.getCollection('employees').updateOne({"_id": e._id}, {$set: {"teams": e.teams}}); })