Performance Mongo查询性能

Performance Mongo查询性能,performance,mongodb,indexing,collections,mongo-collection,Performance,Mongodb,Indexing,Collections,Mongo Collection,使用MongoChef时,我发现随着时间的推移和集合中文档的数量的增加,查询变得越来越慢。 例如:我在去年11月启动了一个应用程序,从那时起,我将数据保存到同一个集合中的mongo DB中,没有过期日期 现在我执行这个查询: { "mongoTime": { $gte: "2015-09-01T15:46:51+0200" }, $and: [ { "mongoTime": { $lt: "2015-11-01T15:46:51+0200" } } ] } 它正在以0.178秒的速度检索239

使用MongoChef时,我发现随着时间的推移和集合中文档的数量的增加,查询变得越来越慢。 例如:我在去年11月启动了一个应用程序,从那时起,我将数据保存到同一个集合中的mongo DB中,没有过期日期

现在我执行这个查询:

{ "mongoTime": { $gte: "2015-09-01T15:46:51+0200" }, $and: [ { "mongoTime": { $lt: "2015-11-01T15:46:51+0200" } } ] }
它正在以0.178秒的速度检索239 691个文档,检索时间为2个月

但是:

正在以6.391秒的时间检索199909个文档,持续3天

区别:第一个查询获取第一次插入Mongo的所有文档,第二个查询获取过去3天到现在的所有文档

当然,这个收藏已经有数百万份文件,我想读一些关于如何处理这个问题的建议。我考虑过使用索引:比如:

db.clicks.createIndex( { "mongoTime": 1 } ) 

但是更新此集合的索引需要一段时间,最好在出错之前询问,索引也会影响写入性能

提前谢谢

阅读正确答案并应用索引后:

{ "mongoTime": { $gte: "2016-01-27T00:00:00+0000" }, $and: [ { "mongoTime": { $lt: "2016-01-29T11:38:42+0000" } } ] }
正在以0.194秒的速度检索199909个文档,检索时间为3天

大的改进。谢谢…

db.clicks.createIndex({“mongoTime”:1})
是的,此索引将显著提高您提供的查询的性能。MongoDB将能够更有效地检查查询的过滤条件,而不是遍历集合中的每个文档,它将遍历索引,从而大大减少必须访问的节点数

顺便说一下,您没有正确使用。以下是正确的方法:

{$and:[
{“mongoTime”:{$gte:{$2016-01-27T00:00:00+0000},
{“mongoTime”:{$lt:“2016-01-29T11:38:42+0000”}
] }
db.clicks.createIndex({“mongoTime”:1})
是的,此索引将显著提高您提供的查询的性能。MongoDB将能够更有效地检查查询的过滤条件,而不是遍历集合中的每个文档,它将遍历索引,从而大大减少必须访问的节点数

顺便说一下,您没有正确使用。以下是正确的方法:

{$and:[
{“mongoTime”:{$gte:{$2016-01-27T00:00:00+0000},
{“mongoTime”:{$lt:“2016-01-29T11:38:42+0000”}
] }

或者更好,去掉
$和
,把它变成:
{mongoTime:{$gte:{$gte:{$2016-01-27T00:00:00+0000,$lt:'2016-01-29T11:38:42+0000}
。或者更好,去掉
$和
,把它变成:
{$mongoTime:{$gte:{$2016-01-27T00:00+0000,$lt:'2016-01-29T11:38:42+0000}/code>。
db.clicks.createIndex( { "mongoTime": -1 } )
{ "mongoTime": { $gte: "2016-01-27T00:00:00+0000" }, $and: [ { "mongoTime": { $lt: "2016-01-29T11:38:42+0000" } } ] }