Монго запрос выполняется бесконечно - PullRequest
0 голосов
/ 29 ноября 2018

Что-то пошло не так, и я не понимаю, почему.У меня есть сценарий, который раньше работал, но внезапно, если просто остановился.По сути, это запрос монго для большой коллекции Mongo (600 ГБ +).

Вот запрос:

db.action_traces.findOne( {"block_time": {"$lt": "2018-07-15T00:00:00.000Z"} } ).pretty()

Первоначально я не использовал findOne, но я ограничил результаты однимв случае, если я могу помочь, но результат тот же: ничего не происходит.

Если я просто запускаю запрос find, все идет хорошо.

В журнале mongodb ничего не отображается ив системном журнале тоже ничего не актуально.

Очевидно, что с Mongo что-то не так, поскольку htop показывает мне следующее:

Htop mongodb

Процесс монго колеблется, но большую часть времени заполняет один поток ЦП до 100%.

Кто-нибудь может помочь?

Заранее большое спасибо,

1 Ответ

0 голосов
/ 29 ноября 2018

Похоже, что это, вероятно, обходит всю коллекцию - вы добавили индекс на block_time?

.find() возвращает курсор, указывающий на первый набор соответствующих документов, упорядоченный по умолчанию (естественный порядок), если вы не указали порядок сортировки.

.findOne() возвращает один документ - при условии, что если ваш запрос соответствует нескольким документам, то он использует их «естественный порядок» и возвращает первый (что означает, что ему нужно сначала найти все совпадения).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...