MongoChef で遊んでみると、コレクション内のドキュメントの量と時間の経過とともにクエリが遅くなっていることを発見しました。例: 昨年 11 月にアプリを開始し、その時点から同じコレクション内の mongo DB に有効期限なしでデータを保存しています。
今、私はこのクエリを実行します:
{ "mongoTime": { $gte: "2015-09-01T15:46:51+0200" }, $and: [ { "mongoTime": { $lt: "2015-11-01T15:46:51+0200" } } ] }
2 か月間に 0.178 秒で 239,691 ドキュメントを取得しています。
しかし:
{ "mongoTime": { $gte: "2016-01-27T00:00:00+0000" }, $and: [ { "mongoTime": { $lt: "2016-01-29T11:38:42+0000" } } ] }
3 日間で 6.391 秒で 199 909 ドキュメントを取得しています。
違い: 最初のクエリは最初に Mongo に挿入されたすべてのドキュメントを取得し、2 番目のクエリは過去 3 日間から現在までのすべてのドキュメントを取得します。
もちろん、コレクションにはすでに数百万のドキュメントがあります。この問題に対処する方法についてのアドバイスを読みたいと思います。インデックスの使用について考えました:次のようなもの:
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" } } ] }
3 日間、0.194 秒で 199 909 ドキュメントを取得しています。
大きな改善。ありがとう...