高效的mongodb查询,可在10K+;记录?

高效的mongodb查询,可在10K+;记录?,mongodb,Mongodb,以下是名为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-09T1

以下是名为
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
个文档,并且将继续增加


我需要的是找到过去一周的平均小时数(开始时和结束时)(开始时和结束时)?

现在,你需要查询你需要平均的文档,可能只选择你需要的字段(开始时和结束时),并在你的应用程序代码中进行计算

如果您等待下一个主要版本的MongoDB,将有一个新的聚合框架,它将允许您构建一个聚合管道,用于查询文档、选择字段、对其执行计算,并最终返回计算值。很酷


您可以使用$inc运算符(值为_id,表示一周)在单独的集合中维护总和和计数。这样,您就不必查询所有10k记录。您只需查询包含sum&count的集合,然后将sum除以count即可得到平均值

我在下面的帖子中详细解释了这一点: