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

358
Views
Búsqueda de agregación de MongoDB, empuje la salida de ambas colecciones en subobjetos

https://mongoplayground.net/p/xQp-y1iXUtZ

Hay 2 colecciones:

  1. perfil
  2. sustitutos

Después de una búsqueda, la colección externa se devuelve como una matriz. Dado que solo puede haber un elemento en esa matriz (un sub solo puede tener un perfil), tomamos el primero.

Ahora, también me gustaría "empujar" la colección "subs" a un objeto. Hay muchos campos en "subs".

Esto es lo que tengo:

 [ { "PROFILE0": { "_id": "1", "name": "gk" }, "_id": "1", "f1": "f1", "f2": "f1", "f3": "f1", "f4": "f1", "username": "gk" }, { "PROFILE0": { "_id": "1", "name": "gk" }, "_id": "2", "f1": "f1", "f2": "f3", "f3": "f4", "f4": "f5", "username": "gk" } ]

Esto es lo que estoy buscando:

 [ { "PROFILE0": { "_id": "1", "name": "gk" }, "SUBS": { "_id": "1", "f1": "f1", "f2": "f1", "f3": "f1", "f4": "f1", "username": "gk" } }, { "PROFILE0": { "_id": "1", "name": "gk" }, "SUBS": { "_id": "2", "f1": "f1", "f2": "f3", "f3": "f4", "f4": "f5", "username": "gk" } } ]

Esencialmente, el contenido de la colección "local" también como un objeto.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Agrega proyección antes de la búsqueda,

  • $project para crear un campo SUBS y establecer $$ROOT como el valor que es el documento raíz
  • $lookup para unirse a la colección de perfiles, pase SUBS.username de usuario como localField y establezca PROFILE0 as valor, y no necesitamos la etapa $unset
  • $set lo mismo que hiciste
 db.subs.aggregate([ { $project: { _id: 0, SUBS: "$$ROOT" } }, { $lookup: { from: "profile", localField: "SUBS.username", foreignField: "name", as: "PROFILE0" } }, { $set: { "PROFILE0": { $arrayElemAt: ["$PROFILE0", 0] } } } ])

Patio de recreo

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!