Question

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

Ceci est mon code actuel.

Comment puis-je obtenir le nombre ()?

Était-ce utile?

La solution

Si vous utilisez la version 3.7.0 ou supérieure pymongo, voir cette réponse à la place.


Si vous voulez results_count ignorer votre 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 vous voulez que le results_count à plafonner à votre limit(),

Autres conseils

Je ne sais pas pourquoi vous voulez le compte si vous limite déjà de passage « num ». Quoi qu'il en soit, si vous voulez assert, voici ce que vous devez faire.

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

results_count = results.count(True)

qui correspondent results_count num

Depuis la version 3.7.0 et pymongo ci-dessus Collection.count_documents . Exécution cursor.count ou collection.count entraînera message d'avertissement:

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

Pour utiliser count_documents le code peut être modifié comme suit

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

Note: Mode de count_documents fonctionne comme relativement lente par rapport à la méthode de count. Afin de vous optimiser pouvez utiliser collection.estimated_document_count . Cette méthode retourne nombre estimé de documents (comme le nom suggéré) basé sur les métadonnées de collection.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top