Hướng dẫn how do i count documents in mongodb using python? - làm cách nào để đếm tài liệu trong mongodb bằng python?

52

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

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

Làm cách nào để có được count()?

Hướng dẫn how do i count documents in mongodb using python? - làm cách nào để đếm tài liệu trong mongodb bằng python?

vvvvv

19.1K16 Huy hiệu vàng44 Huy hiệu bạc62 Huy hiệu đồng16 gold badges44 silver badges62 bronze badges

Hỏi ngày 11 tháng 12 năm 2010 lúc 6:24Dec 11, 2010 at 6:24

Nếu bạn đang sử dụng pymongo phiên bản 3.7.0 trở lên, hãy xem câu trả lời này thay thế.


Nếu bạn muốn results_count bỏ qua limit() của bạn:

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:

Nếu bạn muốn results_count được giới hạn tại limit() của bạn, hãy đặt

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:
2 thành
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:
3:

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:

Đã trả lời ngày 11 tháng 12 năm 2010 lúc 6:48Dec 11, 2010 at 6:48

Ba COTYDOTTHIRTYDOTthirtydot

220K48 Huy hiệu vàng388 Huy hiệu bạc348 Huy hiệu đồng48 gold badges388 silver badges348 bronze badges

2

Vì pymongo phiên bản 3.7.0 trở lên đếm () không được chấp nhận. Thay vào đó sử dụng

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:
4. Chạy
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:
5 hoặc
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:
6 sẽ dẫn đến thông báo cảnh báo sau:

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

Để sử dụng

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:
7, mã có thể được điều chỉnh như sau

import pymongo

db = pymongo.MongoClient()
col = db[DATABASE][COLLECTION]

find = {"test_set":"abc"}
sort = [("abc",pymongo.DESCENDING)]
skip = 10
limit = 10

doc_count = col.count_documents(find, skip=skip)
results = col.find(find).sort(sort).skip(skip).limit(limit)

for doc in result:
   //Process Document

Lưu ý: Phương pháp

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:
7 thực hiện tương đối chậm so với phương pháp
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:
9. Để tối ưu hóa, bạn có thể sử dụng
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:
0. Phương pháp này sẽ trả về số lượng tài liệu ước tính (như tên được đề xuất) dựa trên siêu dữ liệu thu thập.
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:
7 method performs relatively slow as compared to
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:
9 method. In order to optimize you can use
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:
0. This method will return estimated number of docs(as the name suggested) based on collection metadata.

Đã trả lời ngày 19 tháng 2 năm 2019 lúc 5:23Feb 19, 2019 at 5:23

Sohaib Farooqisohaib FarooqiSohaib Farooqi

5.1573 huy hiệu vàng29 Huy hiệu bạc41 Huy hiệu đồng3 gold badges29 silver badges41 bronze badges

2

Không chắc tại sao bạn muốn đếm nếu bạn đã vượt qua giới hạn 'num'. Dù sao nếu bạn muốn khẳng định, đây là những gì bạn nên làm.

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

results_count = results.count(True)

Sẽ phù hợp với kết quả_count với numresults_count with num

Đã trả lời ngày 27 tháng 9 năm 2012 lúc 12:16Sep 27, 2012 at 12:16

None-daNone-daNone-da

2.7915 huy hiệu vàng36 Huy hiệu bạc61 Huy hiệu đồng5 gold badges36 silver badges61 bronze badges

0

Không thể nhận xét một cách khó chịu về câu trả lời của @sohaib Farooqi ... Lưu ý nhanh: Mặc dù,

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:
1 đã không bị phản đối, nó nhanh hơn đáng kể so với
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:
2 trong tất cả các bài kiểm tra của tôi, khi đếm tất cả các tài liệu trong một bộ sưu tập (tức là Filter = {}). Chạy
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:
3 cho thấy
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:
2 sử dụng đường ống tổng hợp, trong khi
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:
1 không. Đây có thể là một nguyên nhân.when counting all documents in a collection (ie. filter={}). Running
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:
3 reveals that
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:
2 uses an aggregation pipeline, while
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:
1 doesn't. This might be a cause.

Đã trả lời ngày 28 tháng 4 năm 2021 lúc 10:19Apr 28, 2021 at 10:19

Chủ đề này xảy ra là 11 tuổi. Tuy nhiên, vào năm 2022, hàm 'đếm ()' đã bị phản đối. Đây là một cách tôi đưa ra để đếm các tài liệu trong MongoDB bằng Python. Dưới đây là hình ảnh của đoạn mã. Tạo một danh sách trống là không cần thiết, tôi chỉ muốn trở nên kỳ quặc. Hi vọng điêu nay co ich :). Mã mã ở đây.

Đã trả lời ngày 12 tháng 2 lúc 16:31Feb 12 at 16:31

Hướng dẫn how do i count documents in mongodb using python? - làm cách nào để đếm tài liệu trong mongodb bằng python?

Điều trong trường hợp của tôi phụ thuộc vào số lượng các yếu tố phù hợp cho một truy vấn nhất định và chắc chắn không lặp lại truy vấn này hai lần:

một để có được số đếm, và để có được thiết lập kết quả. to get the count, and
two to get the result set.

Không đời nào

Tôi biết tập kết quả truy vấn không hoàn toàn lớn và phù hợp với bộ nhớ, do đó, tôi có thể chuyển đổi nó thành một danh sách và nhận được độ dài danh sách.

Mã này minh họa trường hợp sử dụng:

# pymongo 3.9.0
while not is_over:
  it = items.find({"some": "/value/"}).skip(offset).size(limit)
  # List will load the cursor content into memory
  it = list(it)
  if len(it) < size:
    is_over = True
  offset += size

Đã trả lời ngày 11 tháng 6 năm 2020 lúc 14:38Jun 11, 2020 at 14:38

EvhzevhzEvhz

8.4668 Huy hiệu vàng48 Huy hiệu bạc67 Huy hiệu Đồng8 gold badges48 silver badges67 bronze badges

Làm cách nào để đếm số lượng tài liệu trong MongoDB?

n = đếm (Conn, bộ sưu tập, truy vấn = Mongoquery) trả về tổng số tài liệu trong truy vấn MongoDB được thực hiện trên một bộ sưu tập. returns the total number of documents in an executed MongoDB query on a collection.

Có bao nhiêu tệp trong một bộ sưu tập MongoDB?

Nếu bạn chỉ định số lượng tài liệu tối đa cho bộ sưu tập giới hạn bằng tham số tối đa để tạo, giới hạn phải nhỏ hơn 2^32 tài liệu.Nếu bạn không chỉ định số lượng tài liệu tối đa khi tạo bộ sưu tập giới hạn, không có giới hạn về số lượng tài liệu.

Chức năng nào trong MongoDB được sử dụng để đếm hồ sơ?

Phương thức đếm () của MongoDB - db.Collection.Count () Phương thức đếm () Đếm số lượng tài liệu phù hợp với tiêu chí lựa chọn.db. Collection. count() The count() method counts the number of documents that match the selection criteria.

Làm cách nào để đếm các tài liệu trong tập hợp MongoDB?

Giai đoạn đếm $ trả về số lượng các tài liệu còn lại trong đường ống tổng hợp và gán giá trị cho một trường gọi là passing_scores.$count stage returns a count of the remaining documents in the aggregation pipeline and assigns the value to a field called passing_scores .