У меня есть коллекция mongoDB с миллионами строк, и я пытаюсь оптимизировать свои запросы. В настоящее время я использую структуру агрегации для извлечения данных и группировки их по мере необходимости. Мой типичный запрос агрегации - это что-то вроде: $match > $group > $ group > $project
Однако я заметил, что последние части занимают всего несколько мс, начало самое медленное.
Я попытался выполнить запрос только с фильтром соответствия $, а затем выполнить тот же запрос с помощью collection.find. Запрос агрегации занимает ~ 80 мс, в то время как запрос на поиск занимает 0 или 1 мс.
У меня есть индексы почти для каждого поля, поэтому я думаю, что это не проблема. Любая идея о том, что может пойти не так? Или это просто "нормальный" недостаток структуры агрегации?
Я мог бы использовать запросы на поиск вместо запросов агрегирования, однако мне пришлось бы выполнить много обработки после запроса, и этот процесс можно быстро выполнить с помощью $group
и т.д., поэтому я предпочел бы сохранить структуру агрегации.
Спасибо,
ИЗМЕНИТЬ:
Вот мои критерии:
{
"action" : "click",
"timestamp" : {
"$gt" : ISODate("2015-01-01T00:00:00Z"),
"$lt" : ISODate("2015-02-011T00:00:00Z")
},
"itemId" : "5"
}