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

MongoDB、複数カウント($existsを使用)

    あなたは正しい基本的な考えを持っていましたが、 $exists はクエリ条件であるため、$match 。必要なのは、 $ifNull> 基本的に同じことを行う演算子:

    db.mycollection.aggregate( [
        { "$group": {
            "_id" : { "user_id": "$user_id" },
            "requestA_count": { "$sum": {
                "$cond": [ { "$ifNull": ["$requestA", false] }, 1, 0 ]
            } },
            "requestB_count": { "$sum": {
                "$cond": [ { "$ifNull": ["$requestB", false] }, 1, 0 ]
            } },
            "requestC_count": { "$sum": {
                "$cond": [ { "$ifNull": ["$requestC", false] }, 1, 0 ]
            } },
        } },
        { "$project": {
            "_id": 0,
            "user_id": "$_id.user_id",
            "requestA_count": 1,
            "requestB_count": 1,
            "requestC_count": 1
        } }
    ] );
    

    したがって、 $ifNull フィールドが存在する場合は現在の値を返し、存在しない場合は「右側」の引数を返します。 false以外の戻り値 trueであると解釈されます (もちろん、値が実際にfalseでない限り)

    基本的に、これにより、ドキュメント内のプロパティの存在を論理的にテストするのと同じ機能が提供されます。




    1. 保存する前に影響を受けるマングース_id

    2. 春のデータmongodbグループ

    3. mongodbでの選択的レプリケーション

    4. MongoDB $ exp