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

MongoDBを使用して配列とオブジェクトで$setDifferenceを実行する方法

    その2番目の集計を修正し、すべてのUPIDsを取得する必要があります 配列として。これを実現するには、 $cond を使用できます。 $type に基づいています 配列を返すか、 $objectToArray を使用します 変換を実行するには、次のことを試してください:

    db.Groups.aggregate([
        {
            $project: {
                students: {
                    $cond: [ 
                        { $eq: [ { $type: "$members.regularStudent" }, "array" ] },
                        "$members.regularStudent",
                        { $map: { input: { "$objectToArray": "$members.regularStudent" }, as: "x", in: "$$x.v" } }
                    ]
                }
            }
        },
        {
            $unwind: "$students"
        },
        {
            $group: {
                _id: null,
                UPIDs: { $addToSet: "$students" }
            }
        },
        {
            $project: {
                members: {
                    $setDifference: [ userProductUPIDs , "$UPIDs" ]
                },
                _id : 0
            }
        }
    ])
    



    1. マングースは複数のデータベースリクエストを同時に許可しますか?

    2. MongoDB$firstアグリゲーションパイプラインオペレーター

    3. MongoDB:サブドキュメントをアップサート

    4. Node.js-セッションはres.redirect()を介して持続しません