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

Mongo dengan Java - temukan kueri dengan ukuran batch

DBCursor memungkinkan Anda untuk mengulangi kumpulan dokumen yang dianggap relevan dengan query untuk diteruskan ke find() metode. Itu dengan malas mengambil dokumen-dokumen ini dari database yang mendasarinya dalam potongan batchSize .

Jadi, dengan ukuran batch default (101, IIRC) itu akan mengembalikan 101 dokumen pertama ke klien Anda dan kemudian ketika kode klien Anda beralih di luar dokumen ke-101, itu akan (di belakang layar) mengambil 101 dokumen berikutnya dan seterusnya sampai mana pun berikut ini terjadi terlebih dahulu:

  • Semua dokumen yang relevan dengan kueri Anda dikembalikan, yaitu kursor habis
  • Klien Anda berhenti mengulangi

Hal yang sama berlaku saat Anda menyetel batchSize explicit eksplisit jadi dalam kasus Anda ketika Anda mengatur batchSize=500 , find() panggilan mengembalikan DBCursor yang berisi (paling banyak) 500 dokumen dan jika ada lebih dari 500 dokumen yang cocok dengan kueri Anda, maka saat Anda mengulangi di luar dokumen ke-500, driver MongoDB Java akan (di belakang layar) mengambil kumpulan berikutnya.

Anda menyatakan ...

... jika Anda hanya mendapatkan 500 dokumen, maka Anda berhenti mengulangi setelah 500 atau hanya 500 dokumen yang dianggap relevan dengan query Anda .

Anda dapat melihat berapa banyak dokumen yang relevan dengan kueri Anda dengan menggunakan count() metode. Misalnya:

int count = collection.find(query).count();

Anda juga dapat mengambil semua dokumen yang relevan dengan kueri Anda sekaligus tanpa menggunakan DBCursor seperti ini...

List<DBObject> obj = collection.find(query).toArray();

... meskipun tentu saja ini mungkin berimplikasi pada heap aplikasi Anda karena itu akan menghasilkan setiap dokumen yang memenuhi kriteria Anda disimpan di heap di klien Anda (daripada pendekatan yang lebih ramah memori untuk membacanya dalam batch melalui DBCursor ).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo membuka terlalu banyak koneksi

  2. Kesalahan luwak - tidak ada metode 'toObject' setelah peningkatan

  3. Spring Data Mongo - Bagaimana cara memetakan entitas POJO yang diwarisi?

  4. Spring Mongo Populator satu per satu

  5. Konfigurasi MongoDB di CakePHP 3.x