Что означает отрицательный предел в запросе MongoDB? - PullRequest
14 голосов
/ 23 марта 2012

Я использую гем Mongoid ruby ​​для взаимодействия с MongoDB, и когда я пытаюсь получить что-то из запроса, он добавляет $limit: -1 (т.е. отрицательный), когда я ожидаю, что он будет использовать 1,Я попытался сделать то же самое в консоли, и это не изменило, какой документ был возвращен.

Означает ли отрицательный предел что-то особенное?

Ответы [ 2 ]

8 голосов
/ 23 марта 2012

Под заголовком «numberToReturn» в разделе «OP_QUERY» документации «Протокол проводки Mongo» имеется примечание об отрицательных пределах .

"Если драйвер клиента предлагает функциональность" limit "(например, SQL LIMIT) ключевое слово), то это зависит от драйвера клиента, чтобы убедиться, что не более чем указанный номер документа возвращаются звонящему приложение. Если numberToReturn равен 0, БД будет использовать значение по умолчанию вернуть размер. Если число отрицательное, то база данных вернется этот номер и закройте курсор. Никаких дальнейших результатов по этому запросу можно получить. "

Для получения дополнительной информации о курсорах и ограничении см. Документацию «Запросы и курсоры» , в частности, теперь удаленный «Выполнение запросов в пакетах» раздел.

5 голосов
/ 23 марта 2012

Знак предельного значения определяет, является ли он «жестким лимитом» или «мягким лимитом».Запрос «жесткий лимит» (отрицательный знак) закрывает курсор после того, как он вернул максимальное количество документов, которое он может.«Мягкое ограничение» сохраняет курсор открытым в случае, если ответ не может вместить столько документов, сколько указано ограничением.

...