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

集計メソッドの2つの列の合計

    $facetを使用します 同じ入力ドキュメントのセットで単一のステージ内の複数の集約パイプラインを処理するパイプラインステージ。あなたの場合、カウントを別々に集計してから、2つの結果を結合して、最終的な集計を計算する必要があります。

    これは、次のパイプラインを実行することで実証できます。

    db.collection.aggregate([
        { "$match": { "userid": "123" } },
        {
            "$facet": {
                "groupByPage": [
                    { "$unwind": "$page" },
                    { 
                        "$group": {
                            "_id": "$page",
                            "count": { "$sum": 1 }
                        }
                    }
                ],   
                "groupByNewPage": [
                    { "$unwind": "$newpage" },
                    { 
                        "$group": {
                            "_id": "$newpage",
                            "count": { "$sum": 1 }
                        }
                    }
                ]
            }
        },
        { 
            "$project": {
                "pages": {
                    "$concatArrays": ["$groupByPage", "$groupByNewPage"]
                }
            }
        },
        { "$unwind": "$pages" },
        { 
            "$group": {
                "_id": "$pages._id",
                "count": { "$sum": "$pages.count" }
            }
        },
        { "$sort": { "count": -1 } }
    ], function(error, data){
        if (error) {
            console.log(error);
        } else {
            console.log(data);
        }
    )
    


    1. ハッシュインデックスと昇順インデックスのMongodbパフォーマンスの違い(順序付けされていないフィールドでハッシュを使用しない理由はありますか?)

    2. MongolabとMongodbShellの接続に失敗する

    3. 約束の拒否を解決できず、応答として配列を送信できません

    4. Redisアクティブ-アクティブレプリケーション