使用MongoChef我发现随着时间和集合中文档的数量,查询变得越来越慢。 EX:我去年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个月时间段。
可是:
{ "mongoTime": { $gte: "2016-01-27T00:00:00+0000" }, $and: [ { "mongoTime": { $lt: "2016-01-29T11:38:42+0000" } } ] }
在6.391秒内检索 199 909份文件3天时间段。
差异:第一个查询获取第一个插入Mongo的文档,第二个查询获取最近3天内的所有文档,直到现在。
当然,Collection已经拥有数百万份文档,我想阅读一些关于如何处理这个问题的建议。我想过使用索引:somethig like:
db.clicks.createIndex( { "mongoTime": 1 } )
OR
db.clicks.createIndex( { "mongoTime": -1 } )
但更新此Collection的索引需要一段时间,在发出错误之前最好先询问,索引也会影响写入性能。
提前感谢。
阅读正确答案并附上索引后
{ "mongoTime": { $gte: "2016-01-27T00:00:00+0000" }, $and: [ { "mongoTime": { $lt: "2016-01-29T11:38:42+0000" } } ] }
以0.194秒检索 199 909份文件3天时间段。
大改进。感谢...
答案 0 :(得分:2)