2012-08-16 25 views
6

¿Qué significa un valor negativo para el operador limit?Valor negativo del operador "límite" MongoDB

http://www.mongodb.org/display/DOCS/Aggregation+Framework+-+ $ límite

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Blimit%28%29%7D%7D

Mongo devuelve el mismo documento exacta cuando lo haga limit(1) o limit(-1) ??

+0

Me suena como mongo está tomando el valor absoluto del límite que entra. Lo cual es bueno porque un límite negativo no tiene sentido. –

+0

posible duplicado de [En una consulta de MongoDB, ¿qué significa un límite negativo?] (Http://stackoverflow.com/questions/9833941/in-a-mongodb-query-what-does-a-negative-limit-mean) –

Respuesta

14

Si el número de límite es negativo, generalmente la base de datos devolverá ese número de resultados y cerrará el cursor; esencialmente se devuelve un solo lote de resultados y no se pueden obtener más resultados para esa consulta.

Como el caso menos general, si el valor límite negativo excede el batch size (particularmente el tamaño máximo del lote), entonces se devolverá el lote y se cerrará el cursor si se ha alcanzado el límite o no. Por lo tanto, la regla de lote único supera el límite especificado si el límite es demasiado alto.

Si el límite es positivo, puede dejar el cursor abierto para recibir más resultados y continuar iterando hasta que se agote el cursor.

Para más información sobre los lotes y cursores, echar un vistazo aquí:

http://docs.mongodb.org/manual/core/cursors/#cursor-batches http://docs.mongodb.org/manual/reference/method/cursor.limit/#negative-values

+1

Gracias, ¿entonces una opción es más eficiente que la otra? – kapso

+2

Si está recuperando exactamente ese número de resultados, su límite es mayor que 1 y está por debajo del límite de tamaño del lote (cree que el valor predeterminado es 101, pero ajustable, consulte el enlace en mi respuesta y la sección de lotes), luego el límite negativo puede ser beneficioso. De lo contrario, podría haber problemas con el uso de un límite negativo: la verdadera forma de decir, como siempre, es probar con su conjunto de datos. –

Cuestiones relacionadas