Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

83
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda