У меня есть база данных mongodb, которая содержит большой объем данных без согласованной схемы. Он используется для отслеживания взаимодействия в стиле Google Analytics с нашими приложениями. Мне нужно собрать какой-то вывод за целый месяц, но я борюсь с производительностью запроса, и я не очень хорошо знаю MongoDB.
Единственный способ получить результатыограничив интервал времени, который я запрашиваю, одним днем, используя поле _timestamp
, которое, по моему мнению, проиндексировано по умолчанию (я могу ошибаться).
db.myCollection.find({internalId:"XYZ",username:"Demo",_timestamp:{$gte:ISODate("2019-09-01T00:00:00.000Z"),$lte:ISODate("2019-09-02T00:00:00.000Z")}}); // Day 1..
db.myCollection.find({internalId:"XYZ",username:"Demo",_timestamp:{$gte:ISODate("2019-09-03T00:00:00.000Z"),$lte:ISODate("2019-09-04T00:00:00.000Z")}}); // Day 2..
db.myCollection.find({internalId:"XYZ",username:"Demo",_timestamp:{$gte:ISODate("2019-09-05T00:00:00.000Z"),$lte:ISODate("2019-09-06T00:00:00.000Z")}}); // Day 3..
Это работает "отлично", но я бы предпочел объединить эти отдельные запросы в SQL - но тогда, я думаю, у меня все равно закончится тайм-аут.
В идеале я бы хотел, чтобы каждый из этих запросов выполнялся отдельно, а набор результатов добавлялся каждый раз и возвращался в конце.
Возможно, мне лучше написать простое приложение для этого.
Помоги мне, Оби-Ван Кеноби, ты моя единственная надежда.