sql >> データベース >  >> NoSQL >> MongoDB

MongoDB $ group(mongo遊び場)

    2つの追加ステージが必要です。まず、 $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を使用したMongoDB

    2. RedisクラスターでStackExchange.Redisクライアントを使用する

    3. マングーススキーマ参照と未定義のタイプ'ObjectID'

    4. MongoDBセキュリティ-NoSQLDBを安全に保つためのリソース