MongoDB có con trỏ có thể điều chỉnh , cho phép bạn sử dụng lại con trỏ sau khi tất cả dữ liệu đã được trả về. Nó sẽ trông giống như thế này:
n = 10
docs = db.documents.find({"foo": "bar"}).limit(n)
more = docs.hasNext()
Lưu ý rằng chỉ có 10 tài liệu được truy xuất, nhưng con trỏ có thể được kiểm tra để xác định xem có nhiều đối tượng hơn không. Vấn đề duy nhất là con trỏ có thể điều chỉnh chỉ có thể được sử dụng trên các bộ sưu tập có giới hạn.
Ở trên cũng có thể được sử dụng với con trỏ thông thường, nhưng bạn phải truy vấn cho n + 1
các tài liệu. Về cơ bản, đây là giải pháp tương tự như bạn đang sử dụng bây giờ. Bạn phải sử dụng size()
tuy nhiên, vì điều đó có tính đến các công cụ sửa đổi bỏ qua và giới hạn.
n = 10
docs = db.documents.find({"foo": "bar"}).limit(n + 1)
more = db.size() > n
Tôi không quen thuộc với PyMongo, vì vậy tôi không biết chắc chắn về điều này, nhưng có khả năng giải pháp này gửi n + 1
tài liệu đầy đủ cho đơn đăng ký của bạn, thay vì n
bắt buộc , dẫn đến chi phí băng thông nhỏ. Nếu đúng như vậy, bạn có thể muốn tạo một hàm phía máy chủ thực hiện chức năng tương tự, nhưng chỉ trả về một đối tượng chứa n
tài liệu trong một mảng và cờ cho biết nếu một n + 1
tài liệu có sẵn.