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

369
Vistas
Agregue un ObjectId MongoDb único a cada objeto en una matriz existente

Tengo un documento existente y deseo agregar una Id. de objeto única a cada uno de los Objetos de matriz de transacciones.

 { _id: ObjectId(6086d7e7e39add6a5220d0a5), firstName: "John" lastName: "Doe" transactions: [ { date: 2022-04-12T09:00:00.000+00:00 amount: 286.56 type: "deposit" method: "Bank transfer" }, { date: 2022-04-15T09:00:00.000+00:00 amount: 120.23 type: "withdrawal" method: "cash" }] }

El resultado sería que cada objeto de transacciones tendría un ObjectId único. Probé la siguiente consulta pero agrega el mismo ObjectId a todos los objetos:

 collection.updateMany({}, [ { $set: { transactions: { $map: { input: "$transactions", in: { $mergeObjects: ["$$this", { _id: new mongo.ObjectId() }], }, }, }, }, }, ]);

¿Alguien puede ver por qué obtengo el mismo ObjectId escrito en todos los Objetos en la matriz de transacciones en lugar de ID únicos?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

El código new mongo.ObjectId() se ejecutará en el controlador => 1 id para todos.
Necesita js para ejecutarse en el servidor, una vez para cada miembro.

Intente reemplazar el new mongo.ObjectId() con el siguiente código $function que se ejecutará en el servidor.
En general, debemos evitar javascript, pero no creo que tengamos un operador agregado que genere ObjectId.

Otra alternativa es escribir toda la función $map en javascript, nuevamente con el uso de $function .

* $function requiere MongoDB >=4.4

 { "$function": { "body": "function () {return new ObjectId();}", "args": [], "lang": "js" } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

el campo _id en un documento no se puede modificar. De hecho, está tratando de modificar el objectid principal. pruebe con otro nombre para su campo id_transacción.

about 4 years ago · Juan Pablo Isaza 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