Agregasi Grup MongoDB

Agregasi Grup Mongodb



Agregasi adalah prosedur mengekstraksi data dari koleksi MongoDB. Ini memproses banyak dokumen dan memberikan perkiraan hasil. Agregasi di MongoDB memiliki beberapa operator dan metode yang menjalankan berbagai tugas. Di antara operator tersebut, operator $group mengelompokkan dokumen untuk setiap pengelompokan unik dan mengaturnya sesuai dengan ekspresi yang ditentukan. Operator grup sangat penting dalam MongoDB karena memfasilitasi berbagai manipulasi data. Agregasi $group dalam contoh MongoDB bersama dengan akumulator yang berbeda disediakan di bawah ini.

Bagaimana Cara Kerja Agregasi Grup di MongoDB?

Operator $group harus digunakan untuk mengelompokkan dokumen input sesuai dengan ekspresi _id yang ditentukan. Kemudian harus mengembalikan satu dokumen dengan nilai total untuk setiap grup terpisah. Untuk memulai penerapannya, kami telah membuat koleksi 'Buku' di MongoDB. Setelah pembuatan koleksi 'Buku', kami telah memasukkan dokumen yang terkait dengan bidang yang berbeda. Dokumen dimasukkan ke dalam koleksi melalui metode insertMany() karena kueri yang akan dieksekusi ditunjukkan di bawah ini.

>db.Books.insertMany([

{
_id:1,
judul: 'Anna Karenina',
harga: 290,
tahun: 1879,
order_status: 'Stok tersedia',
pengarang: {
'nama':'Leo Tolstoy'
}
},
{
_id:2,
judul: 'Membunuh Mockingbird',
harga: 500,
tahun:  1960,
order_status: 'stok habis',
pengarang: {
'nama':'Harper Lee'
}
},
{
_id:3,
judul: 'Manusia Tak Terlihat',
harga: 312,
tahun: 1953,
order_status: 'Stok Tersedia',
pengarang: {
'nama':'Ralph Ellison'
}
},
{
_id:4,
judul : 'Tercinta',
harga: 370,
tahun:  1873,
status_pesanan: 'stok_habis',
pengarang: {
'nama':'Toni Morrison'
}
},
{
_id:5,
judul: 'Hal-Hal Yang Terpisah',
harga: 200,
tahun:  1958,
order_status: 'Stok Tersedia',
pengarang: {
'nama':'Chinua Achebe'
}
},
{
_id:6,
judul: 'Warna Ungu',
harga: 510,
tahun:  1982,
order_status: 'stok habis',
pengarang: {
'nama':'Alice Walker'
}
}
])

Dokumen berhasil disimpan dalam koleksi 'Buku' tanpa menemui kesalahan apa pun karena hasilnya diakui sebagai 'benar'. Sekarang, kita akan menggunakan dokumen koleksi 'Buku' ini untuk melakukan agregasi '$group'.









Contoh # 1: Penggunaan Agregasi $group



Penggunaan sederhana dari agregasi $group ditunjukkan di sini. Kueri agregat memasukkan operator '$group' terlebih dahulu, lalu operator '$group' selanjutnya mengambil ekspresi untuk menghasilkan dokumen yang dikelompokkan.





>db.Buku.agregat([

{ $grup:{ _id:'$penulis.nama'} }

])

Kueri di atas dari operator $group ditentukan dengan bidang “_id” untuk menghitung nilai total untuk semua dokumen masukan. Kemudian, kolom “_id” dialokasikan dengan “$author.name” yang membentuk grup berbeda di kolom “_id”. Nilai terpisah dari $author.name akan dikembalikan karena kami tidak menghitung akumulasi nilai apa pun. Eksekusi kueri agregat $group memiliki output berikut. Bidang _id memiliki nilai author.names.



Contoh # 2: Penggunaan Agregasi $group dengan Akumulator $push

Contoh agregasi $group memang menggunakan akumulator yang telah disebutkan di atas. Tapi kita bisa menggunakan akumulator dalam agregasi $group. Operator akumulator adalah yang digunakan pada bidang dokumen input selain yang 'dikelompokkan' di bawah '_id'. Mari kita asumsikan bahwa kita ingin mendorong bidang ekspresi ke dalam array kemudian akumulator '$push' dipanggil di operator '$group'. Contoh ini akan membantu Anda memahami akumulator “$push” dari “$group” dengan lebih jelas.

>db.Buku.agregat(

[

{ $group : { _id : '$_id', tahun: { $push: '$tahun' } } }

]

).cantik();

Di sini, kami ingin mengelompokkan tanggal tahun terbit dari buku-buku yang diberikan dalam larik. Permintaan di atas harus diterapkan untuk mencapai hal ini. Kueri agregasi disediakan dengan ekspresi di mana operator '$group' mengambil ekspresi bidang '_id' dan ekspresi bidang 'tahun' untuk mendapatkan tahun grup menggunakan akumulator $push. Keluaran yang diambil dari kueri khusus ini membuat larik bidang tahun dan menyimpan dokumen yang dikelompokkan kembali di dalamnya.

Contoh # 3: Penggunaan Agregasi $group dengan Akumulator “$min”.

Selanjutnya, kita memiliki akumulator “$min” yang digunakan dalam agregasi $group untuk mendapatkan nilai pencocokan minimum dari setiap dokumen dalam koleksi. Ekspresi kueri untuk akumulator $min diberikan di bawah ini.

>db.Buku.agregat([

{
$grup:{
_Indo:{
judul: '$judul',
status_pesanan: '$status_pesanan'
},
minHarga:{$min: '$price'}
}
}
])

Kueri memiliki ekspresi agregasi “$group” tempat kami mengelompokkan dokumen untuk kolom “title” dan “order_status”. Kemudian, kami menyediakan akumulator $min yang mengelompokkan dokumen dengan mendapatkan nilai harga minimum dari bidang yang tidak dikelompokkan. Saat kami menjalankan kueri akumulator $min di bawah ini, ia mengembalikan dokumen yang dikelompokkan berdasarkan judul dan status_urutan secara berurutan. Harga minimum muncul terlebih dahulu, dan harga dokumen tertinggi ditempatkan terakhir.

Contoh #4: Gunakan Agregasi $group dengan Akumulator $sum

Untuk mendapatkan jumlah semua bidang numerik menggunakan operator $group, operasi akumulator $sum dikerahkan. Nilai non-numerik dalam koleksi dipertimbangkan oleh akumulator ini. Selain itu, kami menggunakan agregasi $match di sini dengan agregasi $group. Agregasi $match menerima kondisi kueri yang diberikan dalam dokumen dan meneruskan dokumen yang cocok ke agregasi $group yang kemudian mengembalikan jumlah dokumen untuk setiap grup. Untuk akumulator $sum, kueri disajikan di bawah ini.

>db.Buku.agregat([

{ $match:{ order_status:'In-Stock'}},

{ $group:{ _id:'$author.name', totalBooks: { $sum:1 } }

}])

Kueri agregasi di atas dimulai dengan operator $match yang cocok dengan semua 'status_pesanan' yang statusnya 'Stok' dan diteruskan ke $group sebagai input. Kemudian, operator $group memiliki ekspresi akumulator $sum yang menampilkan jumlah semua buku dalam stok. Perhatikan bahwa “$sum:1” menambahkan 1 ke setiap dokumen yang termasuk dalam grup yang sama. Keluaran di sini hanya menampilkan dua dokumen yang dikelompokkan yang memiliki 'status_pesanan' yang terkait dengan 'Stok'.

Contoh #5: Gunakan $group Aggregation dengan $sort Aggregation

Operator $group di sini digunakan dengan operator “$sort” yang digunakan untuk mengurutkan dokumen yang dikelompokkan. Kueri berikut memiliki tiga langkah untuk operasi penyortiran. Pertama adalah tahap $match, kemudian tahap $group, dan terakhir adalah tahap $sort yang mengurutkan dokumen yang dikelompokkan.

>db.Buku.agregat([

{ $match:{ order_status:'stok habis'}},

{ $group:{ _id:{ authorName :'$author.name'}, totalBuku: { $sum:1} } },

{ $sort:{ authorName:1}}

])

Di sini, kami telah mengambil dokumen yang cocok dengan 'status_pesanan' yang stoknya habis. Kemudian, dokumen yang cocok dimasukkan dalam tahap $group yang mengelompokkan dokumen dengan field “authorName” dan “totalBooks”. Ekspresi $group diasosiasikan dengan akumulator $sum untuk jumlah total buku yang 'out-of-stock'. Dokumen yang dikelompokkan kemudian diurutkan dengan ekspresi $sort dalam urutan menaik karena '1' di sini menunjukkan urutan menaik. Dokumen grup yang diurutkan dalam urutan yang ditentukan diperoleh dalam output berikut.

Contoh #6: Gunakan $group Aggregation untuk Distinct Value

Prosedur agregasi juga mengelompokkan dokumen berdasarkan item menggunakan operator $group untuk mengekstrak nilai item yang berbeda. Mari kita ekspresikan kueri dari pernyataan ini di MongoDB.

>db.Books.aggregate( [ { $group : { _id : '$title' } } ] ).pretty();

Kueri agregasi diterapkan ke koleksi Buku untuk mendapatkan nilai berbeda dari dokumen grup. $group di sini mengambil ekspresi _id yang menampilkan nilai yang berbeda karena kita telah memasukkan bidang 'judul' ke dalamnya. Keluaran dari dokumen grup diperoleh saat menjalankan kueri ini yang memiliki grup nama judul terhadap bidang _id.

Kesimpulan

Panduan ini bertujuan untuk menghapus konsep operator agregasi $group untuk mengelompokkan dokumen dalam database MongoDB. Pendekatan agregat MongoDB meningkatkan fenomena pengelompokan. Struktur sintaks dari operator $group ditunjukkan dengan contoh program. Selain contoh dasar operator $group, kami juga menggunakan operator ini dengan beberapa akumulator seperti $push, $min, $sum, dan operator seperti $match dan $sort.