for post in db.datasets.find({"test_set":"abc"}).sort("abc",pymongo.DESCENDING).skip((page-1)*num).limit(num):
これは私の現在のコードです。
Count()を取得するにはどうすればよいですか?
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()
で制限する場合は、 set applySkipLimit
to 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)
results_countとnumが一致します
Pymongoバージョン3.7.0以降 count()は非推奨 です。代わりに 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
を使用できます。このメソッドは、コレクションのメタデータに基づいて、ドキュメントの推定数(推奨される名前として)を返します。