Python MongoDB每月平均每天访问量
我需要创建一个查询来检索平均每天的访问次数,按年份和月份分组。 我是mongoDB的新手,我真的不知道怎么做 这是我的数据库模型(代码是用python编写的): 您可以使用类上的Python MongoDB每月平均每天访问量,python,mongodb,aggregation-framework,Python,Mongodb,Aggregation Framework,我需要创建一个查询来检索平均每天的访问次数,按年份和月份分组。 我是mongoDB的新手,我真的不知道怎么做 这是我的数据库模型(代码是用python编写的): 您可以使用类上的\u get\u collection()方法获取pymongo驱动程序实现的原始“collection”对象 因此,如果您有MongoDB 2.6或更高版本,则可以将运算符与聚合一起使用: result = Visits._get_collection().aggregate([ { "$group": {
\u get\u collection()
方法获取pymongo驱动程序实现的原始“collection”对象
因此,如果您有MongoDB 2.6或更高版本,则可以将运算符与聚合一起使用:
result = Visits._get_collection().aggregate([
{ "$group": {
"_id": {
"year": "$year",
"month": "$month"
},
"visits": {
"$sum": { "$size": "$visits" }
}
}}
])
在MongoDB 2.6之前,为了获得元素的计数,您需要首先读取数组
result = Visits._get_collection().aggregate([
{ "$unwind": "$visits" },
{ "$group": {
"_id": {
"year": "$year",
"month": "$month"
},
"visits": { "$sum": 1 }
}}
])
使用运算符限制范围可能是个好主意。PyMongo和MongoDB风格的查询与django风格有点不同,因此您可能希望熟悉MongoDB手册中的内容。我使用的是Mongoengine,无法真正找到如何在PyMongo上执行原始聚合。非常感谢您,我整天都在努力寻找它。你认为模式适合分析吗?上帝保佑你@EduardoAvelves如果您定期查询范围内的数据,那么最好将其添加到某个地方的“预聚合”集合中。您仍然可以使用聚合框架定期构建这些结果,甚至可能对压缩的结果进行进一步聚合。您实际需要什么取决于应用程序的使用模式和您正在处理的数据的大小。
result = Visits._get_collection().aggregate([
{ "$unwind": "$visits" },
{ "$group": {
"_id": {
"year": "$year",
"month": "$month"
},
"visits": { "$sum": 1 }
}}
])