与 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 已经有数百万个文件,我想阅读一些关于如何处理这个问题的建议。我考虑过使用索引:类似于:
db.clicks.createIndex( { "mongoTime": 1 } )
或者
db.clicks.createIndex( { "mongoTime": -1 } )
但是更新这个集合的索引需要一段时间,最好在出错之前询问,索引也会影响写入性能。
提前致谢。
阅读正确答案并应用索引后:
{ "mongoTime": { $gte: "2016-01-27T00:00:00+0000" }, $and: [ { "mongoTime": { $lt: "2016-01-29T11:38:42+0000" } } ] }
在 0.194 秒内检索199 909 个文档,持续 3 天。
大的进步。谢谢...