sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo puedo saber si hay más resultados de una consulta en MongoDB?

MongoDB tiene cursores adaptables , que le permiten reutilizar un cursor después de que se hayan devuelto todos los datos. Se vería algo como esto:

n = 10
docs = db.documents.find({"foo": "bar"}).limit(n)
more = docs.hasNext()

Tenga en cuenta que solo se recuperaron 10 documentos, pero se puede inspeccionar el cursor para determinar si hay más objetos disponibles. El único problema es que los cursores rastreables solo se pueden usar en colecciones limitadas.

Lo anterior también se puede usar con un cursor normal, pero tendría que consultar n + 1 documentos. Esta es básicamente la misma solución que está usando ahora. Tienes que usar size() sin embargo, ya que eso tiene en cuenta los modificadores de salto y límite.

n = 10
docs = db.documents.find({"foo": "bar"}).limit(n + 1)
more = db.size() > n

No estoy familiarizado con PyMongo, así que no lo sé con certeza, pero existe la posibilidad de que esta solución envíe n + 1 documentos completos a su solicitud, en lugar del n requerido , lo que genera una sobrecarga de ancho de banda menor. Si ese es el caso, es posible que desee crear una función del lado del servidor que haga lo mismo, pero solo devuelva un objeto que contenga n documentos en una matriz y una bandera que indica si un n + 1 el documento está disponible.