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

185
Visualizações
Agregado de Mongodb con subdocumentos anidados

Tengo un documento que se parece a esto:

 { "_id": "some_uuid", "inv": { "food01": "id01", "food02": "id02", "food03": "id03" }, "food": { "id01": { "n": "apple" }, "id02": { "n": "banana" }, "id03": { "n": "pear" } } }

Quiero usar Mongodb Aggregate para recuperar el siguiente resultado.

Rendimiento esperado

 { "_id": "some_uuid", "inv": { "food01": "apple", "food02": "banana", "food03": "pear" } }

Alguien me puede orientar como hacer esto? ¡Gracias!

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

0

Una opción es usar $objectToArray para dar formato a estos campos como matrices, lo que permitirá usar $map y $filter para que coincidan:

 db.collection.aggregate([ {$set: {inv: {$objectToArray: "$inv"}, food: {$objectToArray: "$food"}}}, { $project: { inv: {$map: { input: "$inv", in: { k: "$$this.k", v: { $filter: { input: "$food", as: "food", cond: {$eq: ["$$this.v", "$$food.k"]} } } } } } } }, { $project: { inv: { $map: { input: "$inv", in: {k: "$$this.k", v: {$first: "$$this.vvn"}} } } } }, {$project: {inv: {$arrayToObject: "$inv"}}} ])

Vea cómo funciona en el ejemplo del patio de recreo

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