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

114
Visualizações
MongoDB nested aggregation lookup

I wont to connect two collection so as to workouts._id had an assigned value exercise.name.

first collection "workouts":

{
        "_id": {
            "$oid": "60ffbd531b1cba41e8a7fde3"
        },
        "id_user": {
            "$oid": "60fd50ee1e9d064a5cee0bec"
        },
        "date": {
            "$date": "2021-05-20T22:00:00.000Z"
        },
        "name": "wielki bicek",
        "workouts": [{
            "_id": {
                "$oid": "60e07e588a2f1946f895475f"
            },
            "parts": [{
                "_id": {
                    "$oid": "60ffbd531b1cba41e8a7fde5"
                },
                "weight": "30",
                "repeating": "10"
            }]
        }, {
            "_id": {
                "$oid": "60e07e588a2f1946f895475f"
            },
            "parts": [{
                "_id": {
                    "$oid": "60ffbd531b1cba41e8a7fde9"
                },
                "weight": "30",
                "repeating": "10"
            }, {
                "_id": {
                    "$oid": "60ffbd531b1cba41e8a7fdea"
                },
                "weight": "30",
                "repeating": "10"
            }]
        }],
        "__v": 0
    }

second collection "exercises":

{
    "_id": {
        "$oid": "60e07e588a2f1946f895475f"
    },
    "name": "Wyciskanie sztangi",
    "image": "uploads\\2021-07-03T15-12-24.173Z-test.gif",
    "type": "force",
    "groupMuscle": {
        "$oid": "60daf099c1aaa20b4cfdf0fa"
    },
    "instruction": "Opierając tułów znazewnątrz.",
    "__v": 0
}

I have one collection that I want to run nested aggregation on this, but I don't know how to run this operation.

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

0

  • $unwind unwind workouts
  • $lookup lookpup exercises
  • $addFileds get first item
  • $addFileds get only name field
  • $project remove useless field
  • $group group by original id
db.workouts.aggregate([
  {
    "$unwind": "$workouts"
  },
  {
    "$lookup": {
      "from": "exercises",
      pipeline: [
        {
          "$project": {
            name: 1
          }
        }
      ],
      "localField": "workouts._id",
      "foreignField": "_id",
      "as": "names"
    }
  },
  {
    "$addFields": {
      "workouts.i": {
        "$first": "$names"
      }
    }
  },
  {
    "$addFields": {
      "workouts.name": "$workouts.i.name"
    }
  },
  {
    "$project": {
      "names": 0,
      "workouts.i": 0
    }
  },
  {
    "$group": {
      "_id": {
        "_id": "$_id",
        "id_user": "$id_user",
        "date": "$date",
        "name": "$name"
      },
      "workouts": {
        $push: "$workouts"
      }
    }
  }
])

mongoplayground

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