Pregunta

for post in db.datasets.find({"test_set":"abc"}).sort("abc",pymongo.DESCENDING).skip((page-1)*num).limit(num):

Este es mi código actual.

¿Cómo consigo el conteo ()?

¿Fue útil?

Solución

Si está utilizando la versión 3.7.0 pymongo o superior, ver esta respuesta lugar.


Si desea results_count ignorar su limit():

results = db.datasets.find({"test_set":"abc"}).sort("abc",pymongo.DESCENDING).skip((page-1)*num).limit(num)
results_count = results.count()

for post in results:

Si desea que el results_count a un tope establecido en su limit(), conjunto applySkipLimit a True :

results = db.datasets.find({"test_set":"abc"}).sort("abc",pymongo.DESCENDING).skip((page-1)*num).limit(num)
results_count = results.count(True)

for post in results:

Otros consejos

No está seguro de qué quiere el recuento si ya está de paso límite 'num'. De todos modos, si usted quiere hacer valer, esto es lo que debe hacer.

results = db.datasets.find({"test_set":"abc"}).sort("abc",pymongo.DESCENDING).skip((page-1)*num).limit(num)

results_count = results.count(True)

Esto coincidirá con results_count num

Desde la versión pymongo 3.7.0 y por encima de count () está en desuso . En lugar de utilizar Collection.count_documents . Correr cursor.count o collection.count resultará en mensaje de advertencia siguiente:

DeprecationWarning: count is deprecated. Use Collection.count_documents instead.

Para uso count_documents el código se puede ajustar como sigue

import pymongo

db = pymongo.MongoClient()
col = db[DATABASE][COLLECTION]

filter = {"test_set":"abc"}
sort = [("abc",pymongo.DESCENDING)]
skip = 10
limit = 10

doc_count = col.count_documents(filter, skip=skip)
results = col.find(filter).sort(sort).skip(skip).limit(limit)

for doc in result:
   //Process Document

Nota: realiza método count_documents relativamente lento en comparación con el método count. Con el fin de optimizar puede utilizar collection.estimated_document_count . Este método devolverá el número estimado de documentos (como el nombre sugiere) basado en metadatos colección.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top