Menggunakan Agregasi MongoDB untuk Membangun Struktur Kategori Hierarkis
Dalam pengembangan aplikasi, sering kali diperlukan pengelolaan dan tampilan struktur kategori hierarkis, seperti kategori induk, subkategori, dan sub-subkategori. MongoDB menyediakan alat yang sangat berguna untuk tugas ini melalui Kerangka Kerja Agregasi, khususnya dengan tahap $graphLookup
. Artikel ini menjelaskan bagaimana Anda dapat menggunakan agregasi MongoDB untuk membangun struktur kategori hierarkis dari data yang tersimpan dalam koleksi.
1. Struktur Data
Contoh data kategori dalam koleksi MongoDB:
{ "_id" : 1, "cat_id" : 1, "title" : "Parent Category", "parent" : null }
{ "_id" : 2, "cat_id" : 2, "title" : "Child Category", "parent" : 1 }
{ "_id" : 3, "cat_id" : 3, "title" : "Sub Child Category", "parent" : 2 }
Penjelasan singkat:
- Parent Category → kategori induk.
- Child Category → subkategori dari
Parent Category
. - Sub Child Category → sub-subkategori dari
Child Category
.
2. Menggunakan $graphLookup
untuk Membangun Struktur Kategori
Tahap $graphLookup
memungkinkan pencarian rekursif di dalam koleksi, sehingga sangat berguna untuk membangun hierarki kategori.
Contoh pipeline agregasi:
db.categories.aggregate([
{
$match: { "parent": null }
},
{
$graphLookup: {
from: "categories",
startWith: "$_id",
connectFromField: "_id",
connectToField: "parent",
as: "subCategory"
}
}
])
Penjelasan:
-
$match: { "parent": null }
→ Menyaring kategori induk (tanpa parent). -
$graphLookup
→ Melakukan pencarian rekursif subkategori.from
→ Koleksi yang digunakan untuk pencarian (sama,categories
).startWith
→ Titik awal pencarian (_id
kategori induk).connectFromField
→ Bidang dari dokumen awal (_id
).connectToField
→ Bidang di dokumen yang dicari (parent
).as
→ Nama bidang baru untuk hasil pencarian (subCategory
).
3. Hasil Agregasi
Hasil pipeline di atas akan menampilkan struktur kategori hierarkis beserta semua subkategori terkait:
{
_id: 1,
cat_id: 1,
title: 'Parent Category',
parent: null,
subCategory: [
{ _id: 2, cat_id: 2, title: 'Child Category', parent: 1 },
{ _id: 3, cat_id: 3, title: 'Sub Child Category', parent: 2 }
]
}
Dengan hasil ini, Parent Category
memiliki bidang subCategory
yang mencakup semua subkategori terkait.
4. Kesimpulan
Kerangka Kerja Agregasi MongoDB dengan $graphLookup
memungkinkan Anda membangun dan menampilkan struktur kategori hierarkis secara efisien. Pendekatan ini sangat bermanfaat untuk mengelola data hierarkis di aplikasi, dan dapat diterapkan dalam banyak konteks, seperti e-commerce, sistem manajemen konten, dan aplikasi lainnya.