Работает ли sort () MongoDB за O (1) раз? - PullRequest
0 голосов
/ 03 апреля 2019

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

Как правило, сортировка занимает время O (NlogN), но если поле, которое я хочу отсортировать, уже проиндексировано, оно должно занять гораздо меньше времени.

Итак, мой вопрос,

  1. Как я писал в заголовке, выполняет ли sort () MongoDB за O (1) время?
  2. Если нет, то обеспечивает ли MongoDB более быстрый способ получения максимального значения?

1 Ответ

0 голосов
/ 03 апреля 2019

Как я уже писал в заголовке, выполняет ли sort () MongoDB за O (1) время?

НЕТ, и ни в Документация MongoDB не упоминается оit.

Если нет, MongoDB обеспечивает более быстрый способ получения максимального значения?

НЕТ, хотя есть и другой способ использования конвейера агрегации с помощью $max но это не так эффективно, как $sort + $limit.Цитирование из документации

$ sort + $ limit Оптимизация памяти:

Когда $ sort предшествует $ limit, и нет промежуточных этапов, которые изменяют числодокументов оптимизатор может объединить предел $ в $ sort.Это позволяет операции $ sort поддерживать только верхние n результатов по мере ее продвижения, где n - указанное ограничение, и гарантирует, что MongoDB необходимо хранить только n элементов в памяти.

...