[英]Efficient mongodb query to find the average time in a collection of 10K+ records?
以下是一个名为outputs
的集合的记录。
db.outputs.findOne()
{
"_id" : ObjectId("4e4131e8c7908d3eb5000002"),
"company" : "West Edmonton Mall",
"country" : "Canada",
"created_at" : ISODate("2011-08-09T13:11:04Z"),
"started_at" : ISODate("2011-08-09T11:11:04Z"),
"end_at" : ISODate("2011-08-09T13:09:04Z")
}
以上只是一个文档。 有大约10K
的文档,它会不断增加。
我需要查找过去1周(使用created_at)的平均小时数(采用started_at和end_at)?
现在,您将需要查询平均所需的文档,可能仅选择所需的字段(started_at和end_at)并在应用程序代码中进行计算。
如果您等待MongoDB的下一个主要版本,将有一个新的聚合框架,该框架将允许您构建一个聚合管道来查询文档,选择字段并对其进行计算,最后返回计算出的值。 它非常酷。
您可以使用$ inc值(代表一周)的$ inc运算符在一个单独的集合中维护总数和计数。 这样,您不必查询所有1万条记录。 您可以只查询包含总数和计数的集合,然后将总数除以计数以获得平均值。
我在以下帖子中对此做了详细解释:
http://samarthbhargava.wordpress.com/2012/02/01/real-time-analytics-with-mongodb/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.