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

MongoDB $group (монго игрище)

Имате нужда от два допълнителни етапа. Първо можете да стартирате $reduce за изравняване на ExerciseDetail което сега е масив от масиви. След като приключите, можете да стартирате $map с вложен $filter за сдвояване на Sets с ExerciseDetails :

{
    $addFields: {
        ExerciseDetail: {
            $reduce: {
                input: "$ExerciseDetail",
                initialValue: [],
                in: {
                    $concatArrays: [ "$$value", "$$this" ]
                }
            }
        }
    }
},

{
    $project: {
        _id: 1,
        Sets: {
            $map: {
                input: "$Sets",
                as: "set",
                in: {
                    $let: {
                        vars: {
                            exDetail: {
                                $arrayElemAt: [
                                    { $filter: { input: "$ExerciseDetail", cond: { $eq: [ "$$this._id", "$$set.ExerciseId" ] } } },
                                    0
                                ]
                            }
                        },
                        in: {
                            $mergeObjects: [
                                "$$set", "$$exDetail"
                            ]
                        }
                    }
                }
            }
        }
    }
}

Mongo Playground




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. грешка при импортиране на pymongo ubuntu

  2. Вградени или препратени релации

  3. как да импортирам данни в mongoimport в разгърнато приложение за метеор?

  4. Как да ПОРЪЧАТЕ ПО СТОЙНОСТ НА ПОЛЕ в MongoDB

  5. Как да изпълня команда за търсене в пълен текст в MongoDB с Java драйвер?