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

109
Visualizações
Add field to each object of an array based on other field

I have the following Array of data:

    {
            _id: 5f5726ef7d475a61a95c5e0c,
            attributes: [
                {
                    values: [
                        { name: '1' }
                    ],
                },
                { 
                    values: [
                        { name: '2' }
                    ]
                }
            ],
            attr1: [
                { name: "Study Code" },
                { name: "Patient Study" }
            ]
    }

What I need is to add the correspondent value to each on of attr1 objects based on index. So the result would be:

    {
            _id: 5f5726ef7d475a61a95c5e0c,
            attributes: [
                {
                    values: [
                        { name: '1' }
                    ],
                },
                { 
                    values: [
                        { name: '2' }
                    ]
                },
            ],
            attr1: [
                {
                    name: "Study Code",
                    values: [{ name: "1" }]
                },
                {
                    name: "Patient Study",
                    values: [{ name: "2" }]
                }
            ],
    }

I wonder if that possible using aggregation $addFields in MongoDB

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

0

You can use $zip

db.collection.aggregate([
  {
    "$project": {
      attributes: {
        "$zip": {
          "inputs": [
            "$attributes",
            "$attr1"
          ]
        }
      }
    }
  }
])

Here is the Mongo playground for your reference.

about 4 years ago · Juan Pablo Isaza Relatório

0

Query

  • query works if arrays same size
  • ziparray to make [[member1_1 member2_1], ....]
  • map to merge member1_1,member2_1 to a document

Playmongo

aggregate(
[{"$set": {"attr1": {"$zip": {"inputs": ["$attributes", "$attr1"]}}}},
 {"$set": 
   {"attr1": 
     {"$map": 
       {"input": "$attr1",
        "in": 
         {"$mergeObjects": 
           [{"$arrayElemAt": ["$$this", 1]},
             {"$arrayElemAt": ["$$this", 0]}]}}}}}])
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