Я использую pymongo и пытаюсь создать простой список средних значений, где моя коллекция просто загружает имена и время. (это простая математическая игра, в которой ваша скорость для правильного ответа на вопросы сохраняется).Pymongo: Ограничение результатов, используемых для вычисления среднего значения в конвейере
Каждый результат добавляется к БД через питон-кануна 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'])
Спасибо, что это тоже работает. –