Spring Data MongoDB menyediakan abstraksi tingkat tinggi sederhana ke bahasa kueri asli MongoDB. Pada artikel ini, kami akan mengeksplorasi dukungan untuk kerangka kerja Proyeksi dan Agregasi Show
Jika Anda baru mengenal topik ini, lihat artikel pengantar kami Pengantar Spring Data MongoDB 2. ProyeksiDi MongoDB, Proyeksi adalah cara untuk mengambil hanya bidang dokumen yang diperlukan dari database. Ini mengurangi jumlah data yang harus ditransfer dari server database ke klien dan karenanya meningkatkan kinerja Dengan Spring Data MongoDB, proyeksi dapat digunakan dengan MongoTemplate dan MongoRepository Sebelum melangkah lebih jauh, mari kita lihat model data yang akan kita gunakan
2. 1. Proyeksi Menggunakan MongoTemplateMetode sertakan() dan kecualikan() pada kelas Bidang digunakan untuk menyertakan dan mengecualikan masing-masing bidang _Metode ini dapat dirangkai bersama untuk menyertakan atau mengecualikan beberapa bidang. Bidang yang ditandai sebagai @Id (_id dalam database) selalu diambil kecuali dikecualikan secara eksplisit Bidang yang dikecualikan adalah nol dalam contoh kelas model saat rekaman diambil dengan proyeksi. Dalam kasus di mana bidang bertipe primitif atau kelas pembungkusnya, maka nilai bidang yang dikecualikan adalah nilai default dari tipe primitif Misalnya, String akan menjadi null, int/Integer akan menjadi 0 dan boolean/Boolean akan menjadi false Jadi dalam contoh di atas, bidang nama adalah John, id adalah nol dan usia adalah 0 2. 2. Proyeksi Menggunakan MongoRepositorySaat menggunakan MongoRepositories, kolom anotasi @Query dapat ditentukan dalam format JSON
Hasilnya akan sama dengan menggunakan MongoTemplate. Nilai =”{}” menunjukkan tidak ada filter dan karenanya semua dokumen akan diambil 3. PengumpulanAgregasi di MongoDB dibangun untuk memproses data dan mengembalikan hasil yang dihitung. Data diproses secara bertahap dan keluaran dari satu tahap disediakan sebagai masukan untuk tahap berikutnya. Kemampuan untuk menerapkan transformasi dan melakukan komputasi pada data secara bertahap menjadikan agregasi alat yang sangat ampuh untuk analitik Spring Data MongoDB menyediakan abstraksi untuk kueri agregasi asli menggunakan tiga kelas Agregasi yang membungkus kueri agregasi, AggregationOperation yang membungkus tahapan pipa individu dan AggregationResults yang merupakan wadah dari hasil yang dihasilkan oleh agregasi Untuk melakukan dan agregasi, pertama-tama buat aggregation pipeline menggunakan metode static builder pada kelas Aggregation, lalu buat instance Aggregation menggunakan metode newAggregation() pada kelas Aggregation dan terakhir jalankan aggregation menggunakan MongoTemplate
Harap perhatikan bahwa MatchOperation dan ProjectionOperation mengimplementasikan AggregationOperation. Ada implementasi serupa untuk pipa agregasi lainnya. OutType adalah model data untuk output yang diharapkan Sekarang, kita akan melihat beberapa contoh dan penjelasannya untuk mencakup jalur pipa dan operator agregasi utama Kumpulan data yang akan kami gunakan dalam artikel ini mencantumkan detail tentang semua kode pos di AS yang dapat diunduh dari repositori MongoDB Mari kita lihat contoh dokumen setelah mengimpornya ke dalam koleksi yang disebut zips di database pengujian _Demi kesederhanaan dan untuk membuat kode ringkas, dalam cuplikan kode berikutnya, kita akan mengasumsikan bahwa semua metode statis kelas Agregasi diimpor secara statis 3. 1. Dapatkan Semua Negara Bagian Dengan Populasi Lebih Besar Dari 10 Juta Diurutkan berdasarkan Menurunnya PopulasiDi sini kita akan memiliki tiga saluran pipa
Output yang diharapkan akan memiliki bidang _id sebagai negara bagian dan bidang statePop dengan total populasi negara bagian. Mari buat model data untuk ini dan jalankan agregasi
Anotasi @Id akan memetakan kolom _id dari output ke status dalam model _Kelas AggregationResults mengimplementasikan Iterable dan karenanya kita dapat mengulanginya dan mencetak hasilnya Jika model data keluaran tidak diketahui, Dokumen kelas MongoDB standar dapat digunakan 3. 2. Dapatkan Negara Bagian Terkecil menurut Rata-Rata Populasi KotaUntuk masalah ini, kita membutuhkan empat tahap
Meskipun belum tentu diperlukan, kami akan menggunakan tahapan $project tambahan untuk memformat ulang dokumen sesuai model data StatePopulation
Dalam contoh ini, kita sudah mengetahui bahwa hanya akan ada satu dokumen dalam hasil karena kita membatasi jumlah dokumen keluaran menjadi 1 pada tahap terakhir. Dengan demikian, kita dapat memanggil getUniqueMappedResult() untuk mendapatkan instance StatePopulation yang diperlukan Hal lain yang perlu diperhatikan adalah, alih-alih mengandalkan anotasi @Id untuk memetakan _id untuk menyatakan, kami telah melakukannya secara eksplisit dalam tahap proyeksi 3. 3. Dapatkan Negara Dengan Kode Pos Maksimum dan MinimumUntuk contoh ini, kita membutuhkan tiga tahap
_Di sini kami tidak menggunakan model apa pun tetapi menggunakan Dokumen yang sudah disediakan dengan driver MongoDB 4. KesimpulanPada artikel ini, kami belajar cara mengambil bidang tertentu dari dokumen di MongoDB menggunakan proyeksi di Spring Data MongoDB Kami juga belajar tentang dukungan kerangka agregasi MongoDB di Spring Data. Kami membahas fase agregasi utama – grup, proyek, urutkan, batasi, dan cocokkan dan lihat beberapa contoh aplikasi praktisnya. Kode sumber lengkap tersedia di GitHub Bagaimana cara mendapatkan data dari 2 koleksi berbeda di MongoDB?Untuk melakukan MongoDB Menggabungkan dua koleksi, Anda harus menggunakan operator $lookup . Ini didefinisikan sebagai tahap yang mengeksekusi gabungan luar kiri dengan koleksi lain dan membantu memfilter data dari dokumen gabungan. Misalnya, jika pengguna meminta semua nilai dari semua siswa, maka kueri di bawah ini dapat ditulis. Siswa.
Bagaimana Anda menanyakan dua koleksi MongoDB yang terhubung?Tertaut . Permintaan MongoDB menemukan nilai maksimum dari dua hari terakhir Mongodb mendapatkan nama sub koleksi Pymongo memilih nilai pada beberapa koleksi dengan kondisi, dan mengelompokkan berdasarkan tanggal Kueri beberapa koleksi sekaligus dengan MongoDB menggunakan agregat, kecocokan, dan pencarian Permintaan MongoDb pada dua koleksi Bisakah saya menggunakan banyak koleksi di dalam database di MongoDB?Anda dapat memperbarui dokumen dalam dua koleksi . Dan operasi dapat dilakukan secara atomik menggunakan Transaksi MongoDB. Namun, operasi pembaruan pada setiap koleksi akan terpisah - tidak dapat dilakukan sebagai "permintaan tunggal".
Bagaimana cara menggabungkan banyak koleksi dengan $lookup MongoDB?MongoDb Lookup cara menggabungkan beberapa koleksi . apply $lookup sebelum $group (digunakan dalam kasus kardinalitas tinggi) terapkan $lookup setelah $group (digunakan dalam kasus kardinalitas rendah untuk efisiensi lebih) |