繁体   English   中英

有效的mongodb查询以查找10K +记录集合中的平均时间?

[英]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的下一个主要版本,将有一个新的聚合框架,该框架将允许您构建一个聚合管道来查询文档,选择字段并对其进行计算,最后返回计算出的值。 它非常酷。

https://www.mongodb.org/display/DOCS/Aggregation+Framework

您可以使用$ inc值(代表一周)的$ inc运算符在一个单独的集合中维护总数和计数。 这样,您不必查询所有1万条记录。 您可以只查询包含总数和计数的集合,然后将总数除以计数以获得平均值。

我在以下帖子中对此做了详细解释:

http://samarthbhargava.wordpress.com/2012/02/01/real-time-analytics-with-mongodb/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM