MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Rentang kueri untuk pagination MongoDB

Tidak apa-apa untuk menggunakan ObjectId() meskipun sintaks untuk pagination Anda salah. Anda ingin:

 db.tweets.find().limit(50).sort({"_id":-1});

Ini mengatakan Anda ingin tweet diurutkan berdasarkan _id nilai dalam urutan menurun dan Anda ingin yang terbaru 50. Masalah Anda adalah kenyataan bahwa pagination rumit ketika set hasil saat ini berubah - jadi daripada menggunakan lewati untuk halaman berikutnya, Anda ingin mencatat _id di set hasil (_id terbaru ke-50) nilai dan kemudian dapatkan halaman berikutnya dengan:

 db.tweets.find( {_id : { "$lt" : <50th _id> } } ).limit(50).sort({"_id":-1});

Ini akan memberi Anda tweet "terbaru" berikutnya, tanpa tweet baru yang masuk mengacaukan pagination Anda dari waktu ke waktu.

Sama sekali tidak perlu khawatir apakah _id nilai benar-benar sesuai dengan urutan penyisipan - itu akan menjadi 99,999% cukup dekat, dan tidak ada yang benar-benar peduli pada tingkat sub-detik tweet mana yang lebih dulu - Anda bahkan mungkin memperhatikan Twitter sering menampilkan tweet yang rusak, hanya saja tidak terlalu kritis.

Jika adalah kritis, maka Anda harus menggunakan teknik yang sama tetapi dengan "tanggal tweet" di mana tanggal tersebut harus berupa stempel waktu, bukan sekadar tanggal.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara menggunakan janji luwak - luwak

  2. Bagaimana cara mengimplementasikan has_many :melalui hubungan dengan Mongoid dan mongodb?

  3. Bagaimana cara kerja penyortiran di ekstensi PECL mongodb baru?

  4. 4 Cara Mendaftar Koleksi dalam Basis Data MongoDB

  5. Cara memperbarui dokumen yang ada di MongoDB