Cara Mengendalikan Pemprosesan Data Lanjutan dengan Kerangka Gabungan MongoDB

MongoDB telah menempuh perjalanan jauh. Walaupun terdapat banyak pangkalan data NoSQL di luar sana, MongoDB adalah pangkalan data pertama yang terlintas di fikiran ketika berbicara mengenai pangkalan data NoSQL.

Walaupun selalu ada sedikit panas antara orang yang suka SQL dan orang yang lebih suka NoSQL, sebenarnya, pangkalan data seperti MongoDB menyelesaikan masalah yang berbeza.

Dan mereka sangat berguna ketika menyerahkan data tidak berstruktur di mana memanipulasi bentuk data dengan cepat dan cekap (dan mengubahnya menjadi pengetahuan yang relevan) lebih bermanfaat daripada prestasi kukuh yang disediakan oleh pangkalan data SQL sekolah lama.

MongoDB dilengkapi dengan kerangka kerja yang kuat untuk melakukan ini - iaitu, memanipulasi data terus ke pelayan: Kerangka Gabungan. Mari masuk ke dalamnya dan bahas beberapa perkara cepat mengenainya, apakah itu, dan mengapa ia penting.

Apakah Kerangka Gabungan itu?

Kerangka Agregasi hanyalah cara untuk meminta dokumen dalam koleksi di MongoDB. Kerangka ini wujud kerana apabila anda mula bekerja dan memanipulasi data, anda sering perlu mengumpulkan koleksi, mengubahnya, mengeluarkan medan, menamakan semula medan, menggabungkannya bersama, mengelompokkan dokumen mengikut bidang, meletup pelbagai bidang dalam dokumen yang berbeza dan sebagainya .

Ini tidak dapat dilakukan oleh sistem pertanyaan tradisional yang disertakan oleh MongoDB (iaitu, pertanyaan carian atau pertanyaan kemas kini, atau pertanyaan lain yang mungkin anda gunakan).

Set pertanyaan ringkas di MongoDB hanya membolehkan anda mendapatkan semula keseluruhan atau sebahagian daripada dokumen individu. Mereka tidak membenarkan anda memanipulasi dokumen di pelayan dan kemudian mengembalikannya ke aplikasi anda.

Di sinilah kerangka agregasi dari MongoDB masuk. Tidak ada luaran, kerana penggabungan dimasukkan ke dalam MongoDB. Anda boleh belajar bekerja dengan kerangka agregasi MongoDB menggunakan senarai main YouTube percuma ini yang saya buat.

Saluran paip

Kerangka Agregasi bergantung pada konsep saluran paip. Mari lihat gambar yang menerangkannya dengan cara yang lebih baik:

Di sini, seperti yang anda lihat, kami mengambil koleksi dan menyebarkannya melalui saluran paip. Saluran paip ini terdiri dari tahap-tahap tertentu di mana pengendali tertentu mengubahsuai dokumen dalam koleksi menggunakan pelbagai teknik. Akhirnya, output dikembalikan ke aplikasi yang memanggil pertanyaan.

Bandingkan dengan pertanyaan ringkas, seperti cari. Sudah tentu, ia berfungsi dengan banyak cara, tetapi tidak begitu berguna ketika anda ingin mengubah suai data juga semasa mengambilnya.

Anda perlu mengambil dokumen dan mengubahnya dengan sewajarnya dalam aplikasi di pelayan, atau lebih buruk lagi, anda akan menghantarnya kepada pelanggan dan membiarkan kod frontend mengubahnya untuk anda.

Dalam kedua kes tersebut, anda membuang sumber dan lebar jalur. Oleh itu, kerangka pengagregatan menangani masalah ini dengan rapi. Mari lihat bagaimana ia berlaku dengan pengendali.

Pengendali saluran paip

Di MongoDB, saluran pipa adalah susunan yang terdiri dari berbagai operator, yang mengambil banyak dokumen dan mengeluarkan dokumen yang diubah sesuai dengan peraturan yang ditentukan oleh pengaturcara. Operator seterusnya mengambil dokumen yang dikeluarkan oleh operator sebelumnya, oleh itu, ia dipanggil saluran paip.

Anda boleh mempunyai banyak pengendali dalam perancangan, dan pengendali ini dapat diulang juga, tidak seperti pertanyaan MongoDB biasa.

Mari kita lihat beberapa pengendali saluran paip biasa di MongoDB.

kumpulan $

Pengendali ini membolehkan anda mengumpulkan sekumpulan dokumen berdasarkan bidang tertentu dalam dokumen. Ia juga boleh digunakan untuk mengumpulkan pelbagai bidang dalam dokumen bersama-sama.

Saya percaya dengan pepatah bahawa gambar bernilai 1000 patah perkataan. Video bernilai 1000 gambar (baik, secara teknikalnya lebih banyak gambar, tetapi baik-baik saja), jadi mari kita lihat video ringkas mengenai perkara itu:

$ padanan

Pengendali saluran paip berfungsi sangat serupa dengan cara pengendali saluran carian biasa. Walau bagaimanapun, perkara yang baik adalah bahawa ia dapat digunakan berkali-kali kerana anda berada dalam persekitaran saluran paip! Ini menjadikannya kuat.

Mari lihat bagaimana ia digunakan pada koleksi:

had $

Pengendali saluran paip $ skip melangkau dokumen N pertama dan menyerahkan dokumen selebihnya kepada operator seterusnya. Mari lihat contoh ringkas:

$ ponteng

Pengendali saluran paip $ skip melangkau dokumen N pertama dan menyerahkan dokumen selebihnya kepada operator seterusnya. Mari lihat contoh ringkas:

$ bersantai

Pengendali ini secara peribadi adalah kegemaran saya. $ unwind mengambil medan array dan meledakkannya ke dalam beberapa sub-dokumen N dengan dokumen i-th yang mengandungi nilai susunan i-th tertentu sebagai nilai nama bidang.

Digabungkan dengan operator lain seperti $ group dan $ match, ini menjadi sangat kuat untuk pemprosesan data. Bunyi membingungkan? Mari lihat contoh ringkas:

projek $

Pengendali projek membolehkan anda mengeluarkan banyak bidang dari setiap dokumen dan membuang yang lain. Bukan itu sahaja, tetapi anda juga boleh menamakan semula medan yang dipetik, rentetan concat, mengeluarkan substring dan banyak lagi!

Mari kita lihat bagaimana ini berfungsi secara ringkas:

Amalan Terbaik untuk menggunakan Kerangka Gabungan

Dengan kekuatan yang besar datang tanggungjawab yang besar. Anda boleh memanfaatkan kerangka agregasi dengan mudah untuk melakukan pertanyaan mudah juga, jadi penting untuk memastikan bahawa anda tidak menulis pertanyaan pangkalan data yang buruk.

Sebagai permulaan, ingat perkara berikut:

  1. MongoDB akan menolak mana-mana pengendali yang mengambil RAM lebih daripada 100MB dan akan menyebabkan kesalahan. Oleh itu, pastikan anda mengurangkan data anda secepat mungkin kerana satu pengendali tidak boleh menggunakan lebih daripada 100MB memori.
  2. Perkara pesanan! Menetapkan $ match terlebih dahulu akan mengurangkan bilangan dokumen yang dihantar ke saluran paip yang lain. Meletakkan projek $ seterusnya seterusnya akan mengurangkan ukuran dokumen individu dengan menyingkirkan bidang.
  3. Akhirnya, pastikan anda melakukan semua kerja yang memerlukan penggunaan medan terindeks (menyusun, mencocokkan, dan lain-lain) sebelum anda menggunakan operator seperti $ projek atau $ bersantai. Ini kerana pengendali ini membuat dokumen baru yang tidak mempunyai indeks dari dokumen asal.

Kesimpulannya

MongoDB adalah alat pangkalan data yang hebat dan dapat sangat membantu bagi syarikat kecil dan perniagaan kecil yang ingin melakukan lelaran dengan cepat. Ini sebahagiannya disebabkan oleh sekatan yang longgar dan sifat pemaaf.

Saya menggunakan MongoDB sendiri di codedamn - platform untuk pembangun seperti anda di mana semua orang belajar dan berhubung!

Damai!