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

87
Vistas
actualizar agregado no modifica todos los documentos

Data de muestra:

 { _id: , instances: [ { instance_id: ObjectId() } ] }

Necesito convertir a ObjectId a formato String en la matriz de instancias.

se me ocurrió la siguiente consulta

 db.test.update( {'_id': {'$in': ['1054605|2347', '1053095|2404']}}, [ { $set: { i: { $map: { input: "$instances", as: "instance", in: { $mergeObjects: [ "$$instance", { instance_id: { $cond: { if: { $eq:[ { $type: "$$instance.instance_id"} , "objectId"] }, then: { $convert:{ input: "$$instance.instance_id", to: "string" } }, else: "$$instance.instance_id" } } } ] } } } } } ])

Pero la consulta anterior funciona solo para un documento. Pero no funciona en varios documentos, simplemente dice 0 documentos actualizados.

¿Alguna sugerencia por favor?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Está utilizando el método de actualización :

De forma predeterminada, el método db.collection.update() actualiza un solo documento. Incluya la opción multi: true para actualizar todos los documentos que coincidan con los criterios de consulta.

Todo lo que tiene que hacer es agregar el indicador multi: true a las opciones de actualización, así:

 db.collection.update( <query>, <update>, { multi: true, } )
over 4 years ago · Santiago Trujillo Denunciar

0

Entonces, el problema aquí es la función Model.update()

La función Update() actualiza un objeto, pero ese comportamiento se puede anular agregando multi: true a la función de actualización como se menciona en la documentación aquí .

Habiendo dicho eso, también puede usar un enfoque más "limpio" para la situación usando updateMany() en lugar de update() con multi: true .

updateMany() es lo mismo que update() , excepto que MongoDB actualizará todos los documentos que coincidan con el filtro independientemente del valor de la opción múltiple.

Esto ofrecería una pieza de código más limpia y legible. La documentación para updateMany() se puede encontrar aquí .

over 4 years ago · Santiago Trujillo Denunciar
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