Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

249
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda