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 comte ()?
Je ne sais pas pourquoi vous voulez le compte si vous passez déjà la limite 'NUM'. Quoi qu'il en soit, si vous voulez assert, voici ce que vous devriez faire.
results = db.datasets.find({"test_set":"abc"}).sort("abc",pymongo.DESCENDING).skip((page-1)*num).limit(num)
results_count = results.count(True)
Qui correspondra résultats_count avec num
Depuis que PymonGo version 3.7.0 et supérieure comptage () est obsolète . Utilisez plutôt Collection.count_documents
. Fonctionnement cursor.count
ou collection.count
entraînera un message d'avertissement suivant:
DeprecationWarning: count is deprecated. Use Collection.count_documents instead.
Utiliser count_documents
Le code peut être ajusté 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
Remarque: count_documents
La méthode fonctionne relativement lente par rapport à la méthode count
. Afin d'optimiser, vous pouvez utiliser collection.estimated_document_count
. Cette méthode reviendra le nombre estimé de DOCS (comme le nom suggéré) sur la base de métadonnées de collecte.