Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

108
Vistas
MongoDB javascript condición de igualdad de cadena

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}}); })
about 4 years ago · Santiago Gelvez
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda