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

245
Views
Agregación de MongoDB: combine múltiples valores de un documento de la colección A para buscar un solo valor dentro de un documento de la colección B

Digamos que tengo las siguientes dos colecciones, sites y webpages . Estoy tratando de entender cómo crear una agregación que me permita combinar los valores de un documento de la colección de sites y usarlo para buscar un valor de la colección de webpages . Además, necesito anteponer los valores combinados con una cadena.

 // sites collection [ { "_id" : 3, "host" : "www.example-foo.com", "path": "/bar", "hasVisited": false }, ]
 // webpages collection [ { "_id" : 5, "url" : "https://www.example-foo.com/bar" }, { "_id" : 8, "url" : "https://www.fizz.com/buzz" }, ]

Sin una agregación, haría algo como lo siguiente.

 const site = await db.sites.findOne({ hasVisited: { $eq: false } }); const pages = await db.webpages.find({ url: `https://${site.host}${site.path}`, // <--- how to construct this in a lookup aggregation? string + value + value }); // pages = [{ "_id" : 5, "url" : "https://www.example-foo.com/bar" }]
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Esto es como la traducción de su código con las 2 consultas de búsqueda en 1 usando $lookup

Consulta

  • primero findOne es el $match y el $limit 1
  • $set url es hacer que la cadena se concatene
  • el segundo hallazgo es hacer la $lookup (con el sitio 1 de las etapas anteriores)

*si desea hacerlo para más de 1 sitio, elimine el límite y proyecte más campos, para saber a dónde pertenecen estas páginas (a qué sitio)

Código de prueba aquí

 db.sites.aggregate([ { "$match": { "hasVisited": { "$eq": false } } }, { "$limit": 1 }, { "$set": { "url": { "$concat": [ "https://", "$host", "$path" ] } } }, { "$lookup": { "from": "webpages", "localField": "url", "foreignField": "url", "as": "pages" } }, { "$project": { "_id": 0, "pages": 1 } } ])
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!