Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

81
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!