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

mongo-queryを使用して2つの配列の$setDifferenceを確認する方法

    これは私の以前の回答の1つへのフォローアップであるため、コードを修正しようとします。つまり、データベースをアップグレードできないため、2つのクエリが必要になるため、コードは次のようになります。

    var queryResult = db.UserDetails.aggregate(
    {
    $lookup: {
        from: "UserProducts",
        localField: "UID",
        foreignField: "UID",
        as: "userProduct"
        }
    },
    { $unwind: "$userProduct" },
    {
        "$project": { "_id" : 0, "userProduct.UPID" : 1 }
    },
    {
        $group: {
            _id: null,
            userProductUPIDs: { $addToSet: "$userProduct.UPID" }
        }
    });
    
    let userProductUPIDs = queryResult.toArray()[0].userProductUPIDs;
    
    db.Groups.aggregate([
        {
            $unwind: "$members.regularStudent"
        },
        {
            $group: {
                _id: null,
                UPIDs: { $addToSet: "$members.regularStudent" }
            }
        },
        {
            $project: {
                members: {
                    $setDifference: [ userProductUPIDs , "$UPIDs" ]
                },
                _id : 0
            }
        }
    ]) // should return 100
    



    1. 配列内のオブジェクトのMongoDB集計合計

    2. OverflowError:MongoDBは最大8バイトのintしか処理できませんか?

    3. MongoDB-.find()で条件ステートメントを設定する

    4. 制限付きのRedisINCRBY