私は pymongo/mongodb の初心者で、今は挑戦しています。
私はmongodb(v 2.04)に次の構造を保存しています。
{
"t": <timestamp>,
"d": {
"uid": <string>,
"action": <string>
}
}
この構造はユーザーのアクションを追跡し、元の構造よりも複雑さがわずかに軽減されています。データは非常に巨大であり、結果を減らすためにクエリの日付範囲が制限されます。
私が望むのは、特定の期間中に最も多くのアクションを実行したユーザーのテーブルを作成できるようにすることです。
テーブル:
Rank Uid #num actions
1 5 235
2 237 234
3 574 229
これまでのところ、クエリのほんの一部しかありません。
query = {"t": {"$lte": end_utc, "$gte": start_utc}}
db.actions.find(query).distinct("d.uid")
これは、一意の uid のリストを生成するだけです。次のようなリストを取得するために(pymongoを使用して)クエリを実行するにはどうすればよいですか。
[
{
"actions": 100,
"uid": 273
},
{
"actions": 99",
"uid": 632
}..n sorted on actions descending
]