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

php mongodb temukan entri ke-n dalam koleksi

Lewati() tidak menggunakan indeks secara efektif sehingga menempatkan indeks pada bidang apa pun dalam koleksi tidak akan ada gunanya.

Karena Anda ingin skip() dokumen ke-n, jika nilai skip() rendah (tergantung pada sistem Anda tetapi biasanya di bawah 100 ribu baris pada pemindaian koleksi lengkap) maka itu mungkin baik-baik saja. Masalahnya adalah bahwa biasanya tidak. Mongo, bahkan dengan indeks, akan diminta untuk memindai seluruh kumpulan hasil sebelum dapat melewatinya yang akan menyebabkan pemindaian koleksi lengkap apa pun yang ada dalam kueri Anda.

Jika Anda sering melakukan ini dan dengan cara acak, mungkin lebih baik menggunakan ID tambahan yang menggabungkan koleksi lain dengan findAndModify untuk menghasilkan nomor dokumen yang akurat ( http://www.mongodb.org/display/DOCS/How+to+Make+an+Auto+Incrementing+Field ).

Namun ini menimbulkan masalah, Anda harus mempertahankan ID ini terutama ketika terjadi penghapusan. Salah satu metode untuk mengatasi ini adalah menandai dokumen sebagai dihapus alih-alih benar-benar menghapusnya. Saat Anda menanyakan dokumen yang tepat, Anda menghilangkan penghapusan dan limit() per satu memungkinkan Anda untuk mendapatkan dokumen terdekat berikutnya ke posisi itu seperti:

$cur = $db->collection->find(array('ai_id' => array('$gt' => 403454), 'deleted' => 0))->limit(1);
$cursor->next();
$doc = $cursor->current();


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $trim

  2. Bagaimana meningkatkan kinerja sisipan MongoDB

  3. MongoDb - Ubah jenis dari Int menjadi Double

  4. Bagaimana mengelola pengguna dan otentikasi di MongoDB

  5. MongoError:Opsi 'kursor' diperlukan, kecuali untuk agregat dengan argumen penjelasan