Вопрос

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

Это мой текущий код.

Как мне получить счет ()?

Это было полезно?

Решение

Если вы используете Pymongo версии 3.7.0 или выше, Смотрите этот ответ вместо.


Если хочешь results_count игнорировать ваше 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:

Если вы хотите results_count быть закрытым на вашем limit(), задавать applySkipLimit к 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:

Другие советы

Не уверены, почему вы хотите подсчет, если вы уже передаете ограничение «Num». Во всяком случае, если вы хотите утверждать, вот что вы должны сделать.

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

results_count = results.count(True)

Это будет совпадать Результаты_count. с участием оставлять

Так как Pymongo версия 3.7.0 и выше счет () устарел. Отказ Вместо этого используют Collection.count_documents. Отказ Бег cursor.count или collection.count приведет к следующему предупреждению:

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

Использовать count_documents Код может быть отрегулирован следующим образом

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

Примечание: count_documents метод выполняет относительно медленный по сравнению с count метод. Для того, чтобы оптимизировать, вы можете использовать collection.estimated_document_count. Отказ Этот метод вернет предполагаемое количество документов (как указано имя) на основе метаданных сбора.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top