es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo generar un ObjectId único dentro de una actualización o agregación?

Algunos subdocumentos en mi colección no tienen _ids. He escrito este código de mongo-shell para tratar de agregarlos.

db.jobs.updateMany({},
{
$set: {
“artifacts.$[elem]._id”: new ObjectId()
}
},
{
arrayFilters: [
{
“elem._id”: {
$exists: false
}
}
]
})

Este código logra dar todos los _ids de los subdocumentos apropiados pero les da el mismo id a todos. ¿Alguna idea de cómo hacer que los ids sean únicos?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Puede usar el operador $inc para incrementar el valor del campo _id en cada documento. Por ejemplo:

    db.jobs.updateMany({},
    {
      $set: {
        "artifacts.$[elem]._id": new ObjectId()
      },
      $inc: {
        "artifacts.$[elem]._id": 1
      }
    },
    {
      arrayFilters: [
        {
          "elem._id": {
            $exists: false
          }
        }
      ]
    })
    

    Esto asegurará que cada documento tenga un valor único de _id.

Comments are closed.