【发布时间】:2017-01-07 21:04:23
【问题描述】:
我正在使用 pymongo 并尝试创建一个简单的平均值列表,其中我的集合仅包含大量名称和时间。 (它是一个简单的数学游戏,其中存储了您正确回答问题的速度)。
每个结果都通过 python-eve REST api 添加到数据库中:
{
"_id" : ObjectId("5866ed13fdc3f36f0620dfdb"),
"_updated" : ISODate("2016-12-30T23:26:11Z"),
"score" : 1,
"name" : "adrian",
"time" : 2.7628954648971558,
"level" : "1",
"_etag" : "08dcbbf3718f837194ba6b439cfb6b3de1d5994f",
"_created" : ISODate("2016-12-30T23:26:11Z")
}
所以我已经创建和更新了时间。
我想显示每个玩家最近 10 次得分所用的平均时间。目前我正在为所有分数的平均值创建一个工作组,但我需要最近的 10 个。我可以对 $avg 表达式应用限制还是有更好的方法?感谢您的帮助。
db = client.mathsgame4
pipe = [{'$group':
{'_id': '$name',
'average': {'$avg': '$time'},
}
},
{'$sort': {'average': 1}}]
res = db.results.aggregate(pipeline=pipe)
for each in res:
print(each['_id'] + " average is " + "%.2f" % each['average'])
【问题讨论】:
标签: python mongodb mongodb-query aggregation-framework