4

上記のトピック(SOを含む)に関連するいくつかの回答と例を確認しましたが、私の要件に答えるために使用する実用的な例を見つけることができませんでした:

いくつかのディメンション (記述属性) とメトリックを含むドキュメントのコレクションがあります。特定のキー値が他のキーの特定のグループ内にある (一意の) 出現回数をカウントしたいと考えています。つまり、ある国から何人のプレイヤーが到着し、特定の言語を話します。

ドキュメント構造:

{
  "date": "2013-06-13T00:00:00.000Z"
  "Operating System": "Windows 7",
  "Browser": "Chrome",
  "Device": "Desktop/Laptop",
  "Country": "Afghanistan",
  "Language": "English",
  "Player": "91823781188577408" //This is a string value, the player id
},
...

要求された結果:

{
  "Country": "Afghanistan",
  "Language": "English",
  "PlayerCount": 120
}

SQL では、これは次のようになります。

SELECT Country, Language, COUNT(DISTINCT PlayerCount) FROM Table 
GROUP BY Country, Language

集計に関する私の最新の試みには、いくつかのタイプの $project、$group、および $unwind が含まれていましたが、残念ながらどれも機能せず、それらを追加してもあまり価値がありません。map-reduce ではなく、集計フレームワークに基づくソリューションを求めていることに注意してください。

どうもありがとう。

4

1 に答える 1

9

試す:

db.YOUR_COLLECTION.aggregate([
    {
        $group: {
            _id: {
                Country: "$Country",
                Language: "$Language"
            },

            PlayerCount: {$sum: 1}
        }
    }
]);

国と言語は「_id」フィールド内にあります。

于 2013-07-10T10:16:53.917 に答える