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

107
Visualizações
Agregación de Mongodb. Necesito filtrar resultados que coincidan con múltiples matrices

Tengo esta consulta que lleva al parámetro $in diferentes arreglos. Uno es openBehaviourIds , el segundo es closeBehaviours . Me gustaría evitar el código duplicado y hacer una consulta con agregación para obtener resultados como {openBehaviours: [{}, {}...], closeBehaviours: [{},{},{}...]} en lugar de usar :

  1. const openBehaviours = esperar comportamientosCollection.aggregate([...])
  2. const closeBehaviours = esperar comportamientosCollection.aggregate([...])

Los ID de comportamiento abiertos y cerrados son matrices de cadenas.

Consulta completa para obtener ambos comportamientos a continuación (casi lo mismo):

 const openBehaviours = await behavioursCollection.aggregate([ { $match: { 'behaviourId': { $in: openBehaviourIds } } }, { $lookup: { from: 'colors', localField: 'domainId', foreignField: 'domainId', as: 'color' } }, { $unwind: '$color' } ], { session }).toArray() const closeBehaviours = await behavioursCollection.aggregate([ { $match: { 'behaviourId': { $in: closeBehaviours } } }, { $lookup: { from: 'colors', localField: 'domainId', foreignField: 'domainId', as: 'color' } }, { $unwind: '$color' } ], { session }).toArray()

¿Cómo podría combinar esto con una consulta para que quede muy claro? Gracias por la ayuda

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

puede usar el operador $facet para lograrlo.

 behavioursCollection.aggregate([ {$facet:{ "openBehaviours":[ { $match: { 'behaviourId': { $in: openBehaviourIds } } }, { $lookup: { from: 'colors', localField: 'domainId', foreignField: 'domainId', as: 'color' } }, { $unwind: '$color' } ], "closeBehaviours":[ { $match: { 'behaviourId': { $in: closeBehaviours } } }, { $lookup: { from: 'colors', localField: 'domainId', foreignField: 'domainId', as: 'color' } }, { $unwind: '$color' } ] }}]);
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