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

MongoDB:forEach vs fetch + each

Kedua pernyataan pada dasarnya melakukan hal yang sama pada level API inti, yaitu mendapatkan kursor dan mengubah hasilnya. Namun ada satu perbedaan "inti" tentang kinerja:

  • .forEach() akan mengubah hasil kursor "satu per satu" dan memproses fungsi iterator yang disediakan.

  • .fetch() di sisi lain mendapatkan "array" dari kursor "sekaligus" yang berarti semuanya "dalam memori" dalam satu pukulan.

Jadi, apa pun yang terjadi, sebenarnya tidak ada yang "lebih cepat" dalam melakukan operasi "inti" untuk mengambil dari kursor kueri. Namun, tidak mengevaluasi "ekspresi" pada setiap iterasi kursor "mungkin" sedikit lebih cepat, jadi .fetch() mungkin menang "sedikit" di sini.

Tangkapan besar yang besar tentu saja adalah "semuanya sekarang dalam memori", jadi ada "overhead" untuk melakukan itu untuk dipertimbangkan. Juga, pada saat .fetch() _.each() belum diproses, begitu kata pepatah. "Apa yang Anda "dapatkan" di ayunan, kemungkinan besar Anda "kehilangan" di bundaran" .

Tanpa pembandingan penuh untuk kasus-kasus tertentu, "waktu" cenderung serupa. Dan pembandingan umum hampir tidak berguna kecuali jika secara khusus menerapkan ukuran kumpulan data yang sedang Anda kerjakan.

Oleh karena itu, kasus umum keluar, "Hampir sama" , Namun menggunakan .fetch() akan menghabiskan lebih banyak memori daripada hanya mengulang kursor dari awal.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo menemukan dokumen di mana array berisi nilai x dari array yang diberikan

  2. Cara memfilter array dalam subdocument dengan MongoDB

  3. Bagaimana Menghitung Grup Produk dengan nama Bidang di Monogodb?

  4. Meteor - Kesalahan MongoDB:Tidak dapat menerapkan pengubah $addToSet ke non-array

  5. Mongo mengonversi semua bidang numerik yang disimpan sebagai string