我正在使用pymongo并试图创建一个简单的平均列表,其中我的集合只是有一堆名字和时间。 (这是一个简单的数学游戏,可以存储正确回答问题的速度)。
通过python-eve REST api:
将每个结果添加到数据库中header("Location: search-result-page-hotel.php?id=". $brochure_id");
所以我有创建和更新的时间。
我想显示每位球员最近10分的平均时间。目前我有一个工作组正在为所有分数的平均值创建,但我最近需要10个。我可以对$ avg表达式应用限制还是有更好的方法?谢谢你的帮助。
{
"_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")
}
答案 0 :(得分:2)
还可以尝试这样的选项。您可以在$ project阶段组合$ avg和$ slice。
aggregate([{
'$sort': {'name': 1,'_created': -1}
}, {
'$group': {
'_id': '$name',
'times': {'$push': '$time'},
}
}, {
'$project': {
'average': {'$avg': {'$slice': ['$times', 10]}
}
}
}, {
'$sort': {'average': 1}
}])