我是pymongo/mongodb的新手,现在我遇到了挑战.
我有以下结构存储在mongodb(v 2.04)中.
{
"t": <timestamp>,
"d": {
"uid": <string>,
"action": <string>
}
}
Run Code Online (Sandbox Code Playgroud)
这种结构跟踪用户操作,并且与我原来的复杂性略有降低.数据非常庞大,查询将具有限制日期以减少结果.
我想要的是能够创建一个在特定时间段内执行最多操作的用户的表.
表:
Rank Uid #num actions
1 5 235
2 237 234
3 574 229
Run Code Online (Sandbox Code Playgroud)
到目前为止,我只查询了点点滴滴:
query = {"t": {"$lte": end_utc, "$gte": start_utc}}
db.actions.find(query).distinct("d.uid")
Run Code Online (Sandbox Code Playgroud)
这将简单地生成一个独特的uid列表.如何查询(使用pymongo)获取如下列表:
[
{
"actions": 100,
"uid": 273
},
{
"actions": 99",
"uid": 632
}..n sorted on actions descending
]
Run Code Online (Sandbox Code Playgroud)