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

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

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 Report

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 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!