web-dev-qa-db-fra.com

Dans le pymgan de MongoDB, comment puis-je faire un compte ()?

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 ()?

27
TIMEX

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

8
None-da

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.

7
Sohaib Farooqi