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[]
?
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ư sauimport 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
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[]
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[True]
for post in results:
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
Đ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