MongoDB memiliki kursor yang dapat disesuaikan , yang memungkinkan Anda menggunakan kembali kursor setelah semua data dikembalikan. Itu akan terlihat seperti ini:
n = 10
docs = db.documents.find({"foo": "bar"}).limit(n)
more = docs.hasNext()
Perhatikan bahwa hanya ada 10 dokumen yang diambil, tetapi kursor dapat diperiksa untuk menentukan apakah ada lebih banyak objek yang tersedia. Satu-satunya masalah adalah bahwa kursor tailable hanya dapat digunakan pada koleksi yang dibatasi.
Di atas juga dapat digunakan dengan kursor biasa, tetapi Anda harus menanyakan n + 1
dokumen. Ini pada dasarnya adalah solusi yang sama seperti yang Anda gunakan sekarang. Anda harus menggunakan size()
meskipun, karena itu memperhitungkan pengubah lewati dan batas.
n = 10
docs = db.documents.find({"foo": "bar"}).limit(n + 1)
more = db.size() > n
Saya tidak terbiasa dengan PyMongo, jadi saya tidak tahu pasti, tetapi ada kemungkinan solusi ini mengirimkan n + 1
dokumen lengkap ke aplikasi Anda, bukan n
yang diperlukan , menghasilkan overhead bandwidth yang kecil. Jika demikian, Anda mungkin ingin membuat fungsi sisi server yang melakukan hal yang sama, tetapi hanya mengembalikan objek yang berisi n
dokumen dalam larik, dan tanda yang menunjukkan jika n + 1
dokumen tersedia.