MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

обединете множество документи в един документ с двете полета на документа в 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"
  }
])

Отговор от @turivishal




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Актуализацията на Mongodb с upsert е неуспешна

  2. mongo $sum, комбиниран, когато правите $unwind и след това $group на множество полета

  3. Как да добавя резултатите от агрегацията на Mongo DB към съществуваща колекция?

  4. Грешка при сериализиране на Django към JSON:Обектът „MetaDict“ няма атрибут „concrete_model“

  5. Ограничете вмъкванията в mongodb