Как использовать операцию запроса mongodb для очень большой базы данных (по 3 сегмента по 260-300 миллионов в каждом) - PullRequest
0 голосов
/ 28 февраля 2020

Мне нужно найти данные между столбцом разных диапазонов дат в защищенной базе данных, содержащей около 800 миллионов документов. Я использую этот запрос:

cursordata=event.aggregate([{"$match":{}},{"$unwind":},{"$project":{}}])

Однако, когда я изменяю его на pandas фрейм данных

df=pd.DataFrame(cursordata)

Это берет навсегда и не работает вообще, он просто получил застрял.

У меня есть 2 варианта:

  1. Либо продолжайте выполнять запрос для различных условий непосредственно из mongodb, либо
  2. После перехода к данным в фрейм данных выполните операции для разных условия

Пожалуйста, предложите, как действовать.

1 Ответ

0 голосов
/ 06 марта 2020

Можем ли мы получить образец документов? Я думаю, вам следует искать индекс, соответствующий запрашиваемым полям.

В качестве напоминания постарайтесь учитывать правило Equality, Sort, Range в индексировании MongoDB. Кроме того, поскольку вы находитесь в изолированном кластере, возможно, вы захотите, чтобы ваш ключ шардинга был в вашем запросе, иначе монго будут запрашивать все шарды (подробнее здесь )

...