sql >> Database >  >> NoSQL >> MongoDB

voeg meerdere documenten samen tot één document met beide documentvelden in MongoDB

db.collection.aggregate([
  {
    $match: {
      Deal: {
        $exists: true
      }
    }
  },
  {
    $lookup: {
      from: "collection",
      let: {
        name: "$Deal.name"
      },
      pipeline: [
        {
          $match: {
            data: {
              $exists: true
            }
          }
        },
        {
          $project: {
            data: {
              $reduce: {
                input: {
                  $objectToArray: "$data.Inside_data.project"
                },
                initialValue: {},
                in: {
                  $cond: [
                    {
                      $eq: [
                        "$$this.k",
                        "$$name"
                      ]
                    },
                    "$$this.v",
                    "$$value"
                  ]
                }
              }
            }
          }
        },
        {
          $project: {
            _id: 0,
            alpha: "$data.alpha",
            beta: "$data.beta"
          }
        }
      ],
      as: "Deal.data"
    }
  },
  {
    $unwind: "$Deal.data"
  }
])

Antwoord door @turivishal




  1. Hoe het gegevenstype van het geneste veld in het Mongo-document te wijzigen?

  2. Een opgeslagen procedure in MongoDB aanroepen via C#

  3. Spring Data MongoDB - Waar maak je programmatisch een index voor een Mongo-collectie?

  4. Gegevens uit MongoDB (gridfs) lezen via Matlab en Java-stuurprogramma