Подтвердить что ты не робот

В запросе MongoDB, что означает отрицательный предел?

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

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

4b9b3361

Ответ 1

Есть заметка об отрицательных границах под заголовком "numberToReturn" в разделе "OP_QUERY" в документации "Протокол Mongo Wire" .

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

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

Ответ 2

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