2012-03-23 20 views
13

Estoy usando la gema de rubíes Mongoid para interactuar con MongoDB y cuando trato de obtener algo de algo de una consulta, agrega $limit: -1 (es decir, uno negativo) cuando esperaría que solo usara 1. Intenté hacer lo mismo en la consola y no cambió qué documento se devolvió.En una consulta MongoDB, ¿qué significa un límite negativo?

¿Un límite negativo significa algo especial?

Respuesta

8

Hay una nota sobre los límites negativos bajo el encabezado "numberToReturn" en el "OP_QUERY" section of the "Mongo Wire Protocol" documentation.

"Si 'límite' las ofertas del controlador de cliente funcionalidad (como el LÍMITE SQL palabra clave), entonces es hasta el controlador de cliente para asegurarse de que no más que el número especificado de documentos son devueltos a la llamada . Si numberToReturn es 0, el db usará el tamaño de retorno predeterminado. Si el número es negativo, la base de datos devolverá ese número y cerrará el cursor. No se pueden obtener más resultados para esa consulta . "

Para obtener más información sobre los cursores y límite, por favor ver el "Queries and Cursors" documentation, específicamente la sección "Execution of queries in batches" ahora eliminado.

+0

* Si el número es negativo, la base de datos devolverá ese número y cerrará el cursor * - ¡qué hackeo feo! –

5

El signo del valor límite determina si es un 'límite duro' o un 'límite suave'. Una consulta de 'límite duro' (signo negativo) cierra el cursor después de haber devuelto la cantidad máxima de documentos que puede. Un 'límite suave' mantiene el cursor abierto en caso de que la respuesta no se ajuste a la cantidad de documentos especificada por el límite.

+2

¿Tiene alguna documentación para respaldar esto? No me he encontrado con esto antes. –

+0

Además, ¿cuál es el límite suave, positivo o negativo? – nicholaides

+0

actualizó la respuesta. buscará una referencia a esto. – Yasser

Cuestiones relacionadas