Как MongoDB сортирует, если поле сортировки не существует в большинстве документов - PullRequest
0 голосов
/ 11 июля 2020

Допустим, у меня в коллекции миллионы документов. По ошибке я выполнил команду сортировки по полю (и пределу), где этого поля нет ни в одном из документов. В этом случае я не получал сообщения об ошибке от MongoDB, вместо этого я получил некоторый вывод от него. Не могли бы вы сообщить мне, как MongoDB обрабатывает команду сортировки, в которой поле не существует. Загружает ли он все данные в память и выполняет ли поиск этого поля (поскольку для этого поля присутствует индекс) и возвращает ли результат на основе поля _id.

1 Ответ

1 голос
/ 11 июля 2020

Несуществующему значению поля назначается специальное значение маркера, и оно будет отсортировано до или после всех других значений поля. Это то же значение, что и поле с null значением . Значение других полей (например, _id) здесь не играет роли.

Индекс поля все равно будет использоваться, так как индекс также включает все документы, которые не имеют значения для поле (если вы не объявили, что это разреженный индекс).

...