Играя с MongoChef, я обнаружил, что запросы становятся медленнее со временем и количеством документов в коллекции. EX: Я начал приложение в ноябре прошлого года, и с этого времени я сохраняю данные в базу данных mongo в той же коллекции без истечения срока действия.Mongo Query Performance
Теперь я выполнить этот запрос:
{ "mongoTime": { $gte: "2015-09-01T15:46:51+0200" }, $and: [ { "mongoTime": { $lt: "2015-11-01T15:46:51+0200" } } ] }
Это получение 239 691 документов в 0,178 сек в течение 2-х месяцев периода времени.
Но:
{ "mongoTime": { $gte: "2016-01-27T00:00:00+0000" }, $and: [ { "mongoTime": { $lt: "2016-01-29T11:38:42+0000" } } ] }
ли получение 199 909 документов в 6.391 сек в течение 3-х дней период времени.
Различия: первый запрос получает все документы, которые были первыми вставлены в Mongo, второй получает весь документ за последние 3 дня до сих пор.
Конечно, в коллекции уже есть несколько миллионов документов, я бы хотел прочитать некоторые советы о том, как справиться с этой проблемой. Я думал об индексах использования: somethig как:
db.clicks.createIndex({ "mongoTime": 1 })
ИЛИ
db.clicks.createIndex({ "mongoTime": -1 })
но обновлять индексы для этой коллекции собирается занять некоторое время, и это лучше спросить, прежде чем делать ошибки, и индексы могут afect пишите также.
благодарит заранее.
После прочтения правильного ответа и индекса применяет указанный:
{ "mongoTime": { $gte: "2016-01-27T00:00:00+0000" }, $and: [ { "mongoTime": { $lt: "2016-01-29T11:38:42+0000" } } ] }
ли получение 199 909 документов в 0,194 сек в течение 3-х дней периода времени.
Большое улучшение. Спасибо ...
Или еще лучше, избавиться от '$ and' и сделать его:' {mongoTime: {$ GTE: "2016-01-27T00: 00: 00 + 0000", $ lt: "2016-01-29T11: 38: 42 + 0000"}} '. – JohnnyHK
Хорошо, спасибо за ответ. –