MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Bỏ qua và giới hạn phân trang cho tổng hợp Mongo

Vấn đề của bạn không phải là với skip()limit(); điều đó đang hoạt động tốt. Vấn đề là với logic tổng thể của bạn; bạn đang lặp lại tất cả 39 tập hợp trong vòng lặp đầu tiên và sau đó nối từng kết quả của tập hợp vào cursor_list .

Tôi không thể tìm ra logic của những gì bạn đang cố gắng làm, vì ví dụ đầu tiên là tìm kiếm trong một bộ sưu tập từ và thứ hai là tìm kiếm trong tất cả các bộ sưu tập cho một trường từ; với điều đó đã nói, bạn có thể đơn giản hóa cách tiếp cận của mình với những thứ như:

offset = 0
per_page = 10
collections = db.list_collection_names()
#
# Add some logic on the collections array to filter what is needed 
#
print(collections[offset:offset+per_page])

CHỈNH SỬA để phản ánh ý kiến. Ví dụ hoạt động đầy đủ về một chức năng để thực hiện điều này. Không cần truy vấn tổng hợp - điều này làm tăng thêm độ phức tạp.

from pymongo import MongoClient
from random import randint

db = MongoClient()['testdatabase1']

# Set up some data
for i in range(39):
    coll_name = f'collection{i}'
    db[coll_name].delete_many({}) # Be careful; testing only; this deletes your data
    for k in range (randint(0, 2)):
        db[coll_name].insert_one({'word': '123456'})

# Main function
def test(offset, per_page, word_to_find):
    found = []
    collections = db.list_collection_names()
    for collection in sorted(collections):
        if db[collection].find_one({word_to_find: { '$exists': True}}) is not None:
            found.append(collection)

    print(found[offset:offset+per_page])

test(offset=0, per_page=10, word_to_find='word')



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose đang lưu tài liệu ngay cả khi tôi kiểm tra xem tài liệu đã tồn tại chưa

  2. Định dạng ngày Mongoose

  3. Làm cách nào để xóa các bản sao dựa trên một khóa trong Mongodb?

  4. Chuyển đổi thuộc tính chuỗi MongoDB hiện có thành BSON ::ObjectId

  5. Lỗi hết thời gian chờ khi kết nối với CosmosDB bằng MongoDB API