Front-End & Back-End Development 4

2.3 MongoDB Compass - Database GUI

Kalau tadi kita sudah mencoba mengakses MongoDB lewat terminal (mongosh), sekarang kita akan kenalan dengan cara yang lebih mudah, yaitu pakai MongoDB Compass! Mari kita lihat analoginya berikut ini:


Bayangkan MongoDB Shell itu seperti terminal atau command prompt — Anda berinteraksi lewat teks dan perintah manual. Sementara MongoDB Compass itu seperti File Explorer untuk database, semua bisa dilakukan lewat tampilan visual, tinggal klik, pilih, dan lihat hasilnya langsung.

Dengan MongoDB Compass, Anda bisa dengan mudah melihat daftar database dan koleksi secara visual, membuka serta mengedit dokumen tanpa perlu mengetik query, menjalankan pencarian atau filter dengan cepat, dan menelusuri struktur maupun relasi data secara instan. Semua aktivitas yang biasanya dilakukan lewat perintah di terminal kini bisa dilakukan dengan tampilan grafis yang intuitif, cukup dengan klik dan pilih menu yang tersedia. Sederhananya, Compass membuat proses bekerja dengan MongoDB jadi lebih intuitif, cepat, dan ramah untuk pemula.

2.3.1 Instalasi MongoDB Compass

Kalau Anda sudah menginstal MongoDB sebelumnya, biasanya MongoDB Compass juga ikut terpasang secara otomatis. Untuk memastikannya, Anda bisa mencarinya di Start Menu (Windows) dengan mengetik “MongoDB Compass”, atau membuka Applications Folder di Mac. Jika aplikasinya sudah ada, langsung saja buka untuk mulai menjelajahi database Anda.

Namun, kalau belum terpasang, Anda bisa mengunduhnya secara terpisah melalui situs resmi mongodb.com/try/download/compass. Pilih platform yang sesuai (Windows, Mac, atau Linux), unduh file instalasi, lalu jalankan hingga proses instalasi selesai. Setelah itu, buka aplikasinya. Anda siap melihat database dalam tampilan visual yang jauh lebih mudah dipahami!

Setelah selesai install tampilannya akan seperti berikut ini


2.3.2 First Time Setup

Saat pertama kali membuka MongoDB Compass, Anda akan disambut dengan tampilan awal bernama New Connection Screen. Di sinilah Anda akan mengatur koneksi ke database yang ingin digunakan.

Langkah 1 – Buka MongoDB Compass

Jalankan aplikasi MongoDB Compass di komputer Anda.
Anda akan melihat layar New Connection dengan kolom Connection String dan tombol Connect.


Langkah 2 – Connect ke MongoDB Lokal

  1. Salin atau ketik connection string default:
    mongodb://localhost:27017
  2. (Opsional) Isi nama koneksi, misalnya: Local MongoDB.
  3. Klik Connect.
  4. Tunggu hingga Compass terhubung dan menampilkan daftar database default (mis. admin, config, local).

Langkah 3 — Eksplorasi Interface Compass


Setelah terhubung, perhatikan bagian-bagian utama di tampilan Compass:
  • Sidebar kiri — Databases & Collections: Menampilkan daftar database. Default biasanya: admin, config, local.
  • Collections (di dalam tiap database): Mirip "tabel" pada SQL. Berisi sekumpulan documents.
  • Main panel tengah — Documents view: Menampilkan isi dokumen dalam format JSON. Dokumen bisa dibuka, diedit, atau dihapus langsung dari sini.
  • Top bar — Query / Filter: Tempat mengetik filter, sort, limit, dan project. Bisa menjalankan query tanpa menulis perintah di shell.
  • Schema Tab: Analisis struktur data. Menunjukkan field types dan pola data (useful untuk desain schema dan validasi).
💡 Tip Cepat:
  • Coba klik sebuah collection → buka tab Documents → jalankan filter sederhana (mis. { "category": "Vitamin" }) pada Query Bar untuk melihat cara kerja filter.
  • Gunakan Schema Tab setelah beberapa dokumen ada untuk melihat tipe data dan field yang sering muncul.

2.3.3 Membuat Database & Collection

Sekarang saatnya kita membuat database pertama untuk proyek Health E-Commerce! Di sini Anda akan belajar cara membuat database, menambah data pertama, dan melakukan operasi dasar seperti edit, delete, dan filter di MongoDB Compass.

Langkah 1 – Create Database

  1. Buka MongoDB Compass.
  2. Klik tombol “+” atau “Create Database” (bisa dari sidebar atau top bar).
  3. Isi detail berikut:
    • Database Name: health-ecommerce
    • Collection Name: products
  4. Klik Create Database.

Langkah 2 – Insert Document

  1. Setelah database dibuat, Anda akan melihat health-ecommerce di sidebar.
  2. Klik collection products.
  3. Klik Add Data → Insert Document.
  4. Masukkan data produk pertama berikut:
{
            "name": "Vitamin C 1000mg",
            "description": "Suplemen vitamin C untuk meningkatkan daya tahan tubuh",
            "category": "Vitamin",
            "price": 85000,
            "stock": 50,
            "manufacturer": "PT Sehat Sejahtera",
            "imageUrl": "/images/vitamin-c.jpg",
            "isActive": true
 }
        
        5. Klik Insert.


Langkah 3 – View Document

  1. Setelah di-insert, Compass akan menampilkan dokumen baru.
  2. Perhatikan MongoDB otomatis generate _id unik.

2.3.4 Operasi Dasar di MongoDB Compass

Setelah Anda berhasil terhubung ke database, saatnya mengenal operasi dasar di MongoDB Compass. Di bagian ini, Anda akan belajar cara mengedit, menghapus, menggandakan, dan memfilter data langsung dari antarmuka. Semua bisa dilakukan dengan cepat tanpa perlu menulis kode, cukup beberapa klik untuk melihat perubahan secara real time.
  1. Edit Document
    • Hover di document → Klik ✏️ Edit
    • Ubah field yang ingin di-update
    • Klik Update
  2. Delete Document
    • Hover → Klik 🗑️ Delete
    • Konfirmasi penghapusan
  3. Clone Document
    • Hover → Klik 📄 Clone
    • Ubah data yang diperlukan → Klik Insert
  4. Filter Documents
    • Di Query Bar, ketik filter berikut:
      { "category": "Vitamin" }
             
    • Klik Find → Hanya produk kategori Vitamin yang muncul.

Kesimpulan

MongoDB Compass adalah antarmuka grafis (GUI) resmi dari MongoDB yang memudahkan Anda untuk mengelola database tanpa perlu mengetikkan perintah di terminal. Melalui Compass, Anda bisa membuat database dan collection, menambahkan dokumen, menjalankan query, hingga menganalisis struktur data secara visual. Ini sangat membantu, terutama bagi pemula yang ingin memahami bagaimana data tersimpan dan diolah di MongoDB dengan cara yang lebih intuitif.

Dengan MongoDB Compass, Anda dapat memantau performa database, melakukan filter data menggunakan query builder, serta melihat relasi antar dokumen dengan tampilan yang rapi dan mudah dibaca. Alat ini menjadi jembatan penting sebelum Anda melangkah ke tahap berikutnya, yaitu pengelolaan database berbasis cloud melalui MongoDB Atlas.

2.4 MongoDB Atlas - Cloud Database

Kalau sebelumnya Anda sudah mengenal MongoDB versi lokal, kini saatnya naik level dengan MongoDB Atlas, yaitu versi cloud dari MongoDB yang memungkinkan Anda mengakses dan mengelola database dari mana saja. Atlas sangat cocok untuk kerja tim atau kolaborasi proyek jarak jauh, karena semua orang bisa terhubung ke database yang sama tanpa perlu repot mengatur server lokal.

2.4.1 Kenapa Atlas Penting?


Bayangkan Aiman bekerja di laptop, sementara Aila mengerjakan hal yang sama di komputer lain. Kalau mereka pakai MongoDB lokal, datanya terpisah. Tapi dengan MongoDB Atlas, mereka bisa berbagi database yang sama secara online!

Keuntungan Menggunakan Atlas:
  • ☁️ Cloud-based – Akses database dari mana saja, kapan saja
  • 🆓 Free tier – Dapat penyimpanan gratis hingga 512MB selamanya
  • 🔄 Auto-backup – Data aman berkat sistem backup otomatis
  • 🔒 Security – Dilengkapi fitur keamanan bawaan
  • 🌍 Global – Pilih server di berbagai wilayah dunia
  • 🚀 Production-ready – Bisa langsung digunakan untuk kebutuhan skala besar
Mari kita analogikan secara sederhana perbedaan MongoDB Lokal dengan MongoDB Atlas. Bayangkan Anda punya dua cara mencatat data.

MongoDB Lokal seperti buku catatan pribadi di rumah. Anda menulis semua data di sana dengan aman, lengkap, tapi cuma bisa diakses saat Anda ada di rumah. Kalau rekan tim ingin melihat atau menambahkan catatan, mereka harus datang langsung ke tempat Anda, atau Anda harus menyalin isi bukunya dan memberikannya ke mereka. Ribet, kan?



MongoDB Atlas seperti Google Docs. Anda menulis catatan di cloud, dan siapa pun yang punya akses bisa membukanya dari mana saja, bisa dari laptop, tablet, atau ponsel. Anda dan tim bisa mengedit bersama, melihat perubahan secara real-time, dan tidak perlu khawatir kehilangan data karena semuanya otomatis tersimpan dan ter-backup.

Dengan kata lain, MongoDB Atlas membuat kolaborasi dan manajemen data jadi jauh lebih praktis, cepat, dan aman—tanpa perlu repot mengatur server lokal di setiap komputer.

2.4.2 Langkah-Langkah Setup MongoDB Atlas

Sampai di sini, Anda sudah tahu bahwa MongoDB Atlas adalah versi cloud dari MongoDB. Sekarang, kita akan langsung praktik membuat database pertama di MongoDB Atlas, dari nol sampai bisa diakses lewat aplikasi Node.js dan MongoDB Compass.

Langkah 1 – Create Account

  1. Buka mongodb.com/cloud/atlas/register
  2. Sign up dengan Email & password, atau Akun Google.
  3. Verifikasi email (cek inbox).
  4. Login ke Atlas.

Langkah 2 – Create Organization & Project

  1. Create Organization
    • Name: My Organization (atau nama Anda)
    • Klik Next



  2. Create Project
    • Name: Health E-Commerce
    • Klik Next
  3. Add Members (Anda bisa skip bagian ini).
  4. Klik Create Project.



Langkah 3 – Create Cluster (Database)

  1. Klik “Build a Database”.
  2. Pilih FREE tier (512MB storage).
  3. Pilih Cloud Provider: AWS / Google Cloud / Azure.
  4. Pilih Region (terdekat dari Indonesia): Singapore (ap-southeast-1) (recommended) atau Mumbai.
  5. Cluster Name: health-ecommerce-cluster.
  6. Klik Create Cluster.
Tunggu sekitar 3–5 menit sampai cluster aktif.


Langkah 4 – Setup Database User

  1. Setelah cluster aktif, buka Database Access (sidebar kiri bawah “Security”).
  2. Klik Add New Database User.
  3. Authentication Method: Password.
  4. Username: aiman (atau nama Anda).
  5. Password: misalnya Aiman123!.
    Catat password ini karena nantinya tidak bisa dilihat lagi!



  6. Database User Privileges: Atlas admin (atau “Read and write to any database”).
  7. Klik Add User.

Langkah 5 – Setup Network Access

Atlas hanya menerima koneksi dari IP yang diizinkan (whitelist).
  1. Buka Network Access (di bawah Database Access).
  2. Klik Add IP Access List.
  3. Klik Add IP Address.
  4. Pilih Allow Access from Anywhere.
    • Access List Entry: 0.0.0.0/0
    • Comment: Development - Allow all
  5. Klik Confirm.
Security Note:2
Untuk production, hindari 0.0.0.0/0. Gunakan IP spesifik server Anda.

Langkah 6 – Get Connection String

Ini bagian penting! String ini dipakai aplikasi Anda untuk connect ke Atlas.
  1. Kembali ke tab Database (sidebar atas).
  2. Klik Connect di tombol di cluster Anda.

3. Pilih “Connect your application”.
  • Driver: Node.js
  • Version: 6.7 or later


4. Copy connection string yang muncul.
mongodb+srv://aiman:<password>@health-ecommerce-cluster.xxxxx.mongodb.net/?retryWrites=true&w=majority
        
5. Ganti <password> dengan password Anda, dan tambahkan nama database di belakang sebelum tanda tanya (?):

mongodb+srv://aiman:Aiman123!@health-ecommerce-cluster.abc123.mongodb.net/health-ecommerce?retryWrites=true&w=majority


Langkah 7 – Test Connection dari Node.js

1. Buat file .env:

MONGODB_ATLAS_URI=mongodb+srv://aiman:Aiman123!@health-ecommerce-cluster.abc123.mongodb.net/health-ecommerce?retryWrites=true&w=majority
        
2. Buat file test.js untuk menguji koneksi:

require("dotenv").config();
            const mongoose = require("mongoose");

            async function connectAtlas() {
            try {
            await mongoose.connect(process.env.MONGODB_ATLAS_URI);
            console.log("✅ Connected to MongoDB Atlas!");
            console.log("☁️ Your data is in the cloud!");
            await mongoose.connection.close();
            } catch (error) {
            console.error("❌ Atlas connection failed:", error.message);
            }
            }

            connectAtlas();
        
Jalankan script di terminal. Jika berhasil, outputnya akan seperti ini:

✅ Connected to MongoDB Atlas!
☁️ Your data is in the cloud!

2.4.3 Connect Compass ke Atlas

Setelah Anda berhasil membuat dan mengonfigurasi cluster di MongoDB Atlas, saatnya melihat data tersebut secara visual dan lebih interaktif menggunakan MongoDB Compass. Compass adalah GUI resmi dari MongoDB yang memungkinkan Anda untuk menjelajahi, mengedit, dan memantau data tanpa perlu menulis query di terminal. Dengan menghubungkan Compass ke Atlas, Anda bisa langsung melihat database cloud Anda, membuat collection baru, dan melakukan CRUD operation dengan mudah, semuanya dalam tampilan yang intuitif. Ikuti langkah-langkahnya berikut ini:
  1. Buka MongoDB Compass.
  2. Paste connection string Atlas (yang sudah lengkap dengan password).
  3. Klik Connect.
  4. Sekarang Anda bisa melakukan operasi CRUD pada data Atlas langsung dari Compass!
    Gambar Compass → Paste Atlas connection string → Connect → Loading → Atlas databases appear → Browse collections dan documents.
Gambar Instruksi connect Compass ke Atlas: Compass → Paste Atlas connection string → Connect


Gambar Instruksi connect Compass ke Atlas: Loading → Atlas databases appear → Browse collections dan documents


2.4.4 Setup Atlas untuk Production

Tujuan dari praktik ini adalah membantu Anda membangun konfigurasi koneksi database yang fleksibel dan siap digunakan pada berbagai environment. Dalam proses pengembangan aplikasi, Anda akan sering berpindah antara database lokal untuk kebutuhan development dan MongoDB Atlas untuk kebutuhan production. Melalui pengaturan yang tepat, aplikasi Anda dapat secara otomatis memilih koneksi yang sesuai tanpa perlu mengubah kode secara manual setiap kali berpindah environment. Dengan demikian, proses kerja menjadi lebih efisien, rapi, dan mengikuti standar praktik profesional dalam backend development.

Sebelum aplikasi dirilis ke publik, pengaturan koneksi database menjadi hal yang sangat penting. Pada tahap pengembangan (development), biasanya digunakan MongoDB lokal karena lebih cepat dan tidak bergantung pada internet. Namun, saat aplikasi sudah memasuki tahap production, Anda perlu menggunakan MongoDB Atlas di cloud agar data dapat diakses dengan aman, stabil, dan dapat dibagikan dengan seluruh tim.

Untuk mendukung kebutuhan tersebut, Anda akan membuat fungsi koneksi database yang dapat menyesuaikan environment secara otomatis menggunakan database lokal ketika development, dan menggunakan Atlas ketika production.

Langkah-langkah Praktik:

1. Setup .env file

Tambahkan konfigurasi berikut agar aplikasi Anda memiliki variabel lingkungan untuk dua mode berbeda:

NODE_ENV=development
            MONGODB_LOCAL_URI=mongodb://localhost:27017/health-ecommerce
            MONGODB_ATLAS_URI=mongodb+srv://aiman:password@cluster.mongodb.net/health-ecommerce
        
Pastikan Anda tidak membagikan password atau connection string ini di GitHub (gunakan .gitignore).

2. Buat fungsi koneksi database

require("dotenv").config();
            const mongoose = require("mongoose");

            const connectDB = async () => {
            const uri =
            process.env.NODE_ENV === "production"
            ? process.env.MONGODB_ATLAS_URI
            : process.env.MONGODB_LOCAL_URI;

            try {
            await mongoose.connect(uri);
            const dbType =
            process.env.NODE_ENV === "production" ? "Atlas (Cloud)" : "Local";
            console.log(`MongoDB ${dbType} connected!`);
            } catch (error) {
            console.error("Connection error:", error.message);
            process.exit(1);
            }
            };

            module.exports = connectDB;
        
Fungsi connectDB() ini akan otomatis memilih koneksi database sesuai environment yang sedang aktif.

3. Pengujian Development:

Untuk Development:

NODE_ENV=development node test.js
            # Output: MongoDB Local connected!
        

4.Pengujian Production:

NODE_ENV=production node test.js
            # Output: MongoDB Atlas (Cloud) connected!
        
Hasil Akhir :
Platform ini sangat ideal bagi pengembang yang ingin fokus pada pengembangan fitur aplikasi tanpa perlu menangani detail infrastruktur, sekaligus tetap menjaga keamanan dan skalabilitas data melalui fitur seperti automatic backup dan pemantauan performa.

Hasil Akhir

Anda kini memiliki setup koneksi database yang fleksibel dan profesional.
  • Gunakan MongoDB lokal untuk development agar proses belajar dan percobaan dapat dilakukan dengan cepat.
  • Gunakan MongoDB Atlas untuk staging atau production agar database dapat diakses bersama tim dengan keamanan serta stabilitas tinggi.

Tips:

  • Gunakan database lokal untuk eksperimen tanpa risiko.
  • Gunakan Atlas untuk kebutuhan real-time dan kolaborasi tim.
  • Jangan pernah mengunggah connection string yang mengandung password ke repositori GitHub.
  • Simpan semua konfigurasi sensitif di file .env, lalu masukkan file tersebut ke .gitignore.

Kesimpulan

MongoDB Atlas adalah layanan database-as-a-service (DBaaS) yang memungkinkan Anda mengelola database secara langsung di cloud tanpa perlu melakukan instalasi lokal atau konfigurasi server secara manual. Dengan Atlas, Anda dapat membuat cluster database, menyimpan data secara aman, serta mengaksesnya dari mana saja.

Selain itu, MongoDB Atlas juga menyediakan fitur penting seperti automatic backup, pemantauan performa, dan integrasi mudah dengan aplikasi modern. Platform ini sangat ideal bagi pengembang yang ingin fokus pada pengembangan fitur aplikasi tanpa perlu menangani detail infrastruktur, sekaligus tetap menjaga keamanan dan skalabilitas data.

2.5 Konsep Dasar MongoDB

Sebelum mulai membangun aplikasi menggunakan MongoDB, penting untuk memahami konsep dasarnya terlebih dahulu. Pada bagian ini, kita akan membahas empat hal utama yang menjadi fondasi dalam pengelolaan data di MongoDB, yaitu:
  • Collections & Documents
  • ObjectId
  • Data Types
  • Embedded vs Referenced Data
Dengan memahami keempat konsep ini, Anda akan lebih siap untuk merancang struktur database yang efisien, fleksibel, dan mudah di-maintain.

2.5.1 Collections & Documents

MongoDB menyimpan data dalam bentuk collection dan document.

Collection adalah kumpulan dari beberapa document yang memiliki topik atau jenis data yang sama — mirip dengan tabel dalam database SQL.
Document adalah satuan data individu dalam format JSON-like, mirip seperti satu baris (row) di tabel SQL.
Contoh:

// Collection: products
            [
            { _id: 1, name: "Vitamin C", category: "Vitamin" },
            { _id: 2, name: "Omega-3", category: "Supplement" },
            { _id: 3, name: "Termometer", category: "Medical Equipment" }
            ]

            // Collection: users
            [
            { _id: 1, name: "Aiman", email: "aiman@example.com" },
            { _id: 2, name: "Aila", email: "aila@example.com" }
            ]
        
Struktur:

Database: health-ecommerce
├── Collection: products (30 documents)
├── Collection: users (150 documents)
├── Collection: orders (200 documents)
└── Collection: reviews (500 documents)

2.5.2 ObjectId - Unique Identifier

Setiap document di MongoDB memiliki sebuah field unik bernama _id, yang berfungsi seperti primary key di database relasional. Kalau Anda tidak membuatnya sendiri, MongoDB akan otomatis menghasilkan nilai ObjectId untuk setiap document. Nah, inilah yang membuat setiap data bisa dibedakan satu sama lain meskipun disimpan di koleksi yang sama.

Contoh:

ObjectId("507f1f77bcf86cd799439011");
        

Sekilas, ObjectId terlihat seperti sekumpulan karakter acak. Tapi sebenarnya, di balik 24 karakter heksadesimal itu tersimpan informasi yang sangat terstruktur.

Struktur ObjectId (12 bytes):
  • 4 bytes pertama: Timestamp saat ObjectId dibuat — artinya dari ObjectId kita bisa tahu kapan document itu dibuat, bahkan tanpa menambahkan field createdAt.
  • 5 bytes berikutnya: Nilai acak (random value) yang dihasilkan berdasarkan host dan proses yang membuatnya. Ini memastikan ObjectId unik meskipun dibuat di server yang berbeda.
  • 3 bytes terakhir: Counter yang terus bertambah setiap kali ObjectId baru dibuat pada proses yang sama. Ini memastikan tidak ada duplikasi walaupun dua ObjectId dibuat di waktu yang sama.
Dengan kombinasi ketiga bagian ini, MongoDB bisa menjamin bahwa setiap ObjectId benar-benar unik secara global, tanpa perlu koordinasi antar server.

Kenapa ObjectId Itu Berguna?
  • Unik di seluruh sistem. Anda bisa menggabungkan data dari banyak server tanpa takut ada id yang bentrok.
  • Mengandung informasi waktu. Dari ObjectId, Anda bisa mengekstrak kapan data dibuat, ini sangat membantu untuk logging atau audit.
  • Bisa diurutkan secara kronologis. Karena bagian awal ObjectId adalah timestamp, Anda bisa melakukan sort berdasarkan id untuk menampilkan data dari yang paling baru atau paling lama.
Contohnya, kalau Anda menjalankan query seperti ini:

db.orders.find().sort({ _id: -1 })
        
Hasilnya akan otomatis menampilkan order terbaru di atas, tanpa perlu menambah field waktu tambahan.

Membuat ObjectId Secara Manual

Jika Anda menggunakan Mongoose di Node.js, Anda juga bisa membuat ObjectId sendiri:

const mongoose = require("mongoose");
const newId = new mongoose.Types.ObjectId();
console.log(newId); // 507f1f77bcf86cd799439011

Fitur ini berguna ketika Anda ingin membuat relasi antar document sebelum data benar-benar disimpan ke database (misalnya untuk pre-generate ID saat membuat data di frontend).

Insight untuk Intermediate Developer
Untuk developer tingkat menengah, memahami struktur ObjectId bisa membantu Anda lebih efisien dalam mendesain skema data. Misalnya:
  • Anda tidak selalu perlu field createdAt karena timestamp sudah ada di ObjectId.
  • Anda bisa melakukan filter berdasarkan waktu pembuatan hanya dengan memanfaatkan range dari ObjectId.
  • Anda bisa debugging lebih cepat, karena dengan membaca ObjectId, Anda tahu kapan dokumen itu dibuat.
Contoh: 
ObjectId("507f1f77bcf86cd799439011").getTimestamp()
// Output: 2012-10-17T20:46:15Z

Artinya, dari ID saja Anda sudah tahu data tersebut dibuat pada tanggal dan jam tertentu. Cukup keren, kan?

2.5.3 Data Types di MongoDB

Salah satu keunggulan utama MongoDB dibandingkan database relasional adalah fleksibilitas dalam tipe data. Jika di SQL Anda harus menentukan tipe kolom sejak awal dan sulit mengubahnya, di MongoDB setiap document dapat berisi beragam tipe data yang disesuaikan dengan kebutuhan, bahkan antar document dalam satu collection bisa memiliki struktur yang sedikit berbeda.

Hal ini menjadikan MongoDB sangat cocok untuk aplikasi yang berkembang cepat, karena skemanya bisa beradaptasi dengan perubahan fitur atau kebutuhan data di masa depan.


Contoh Document dengan Berbagai Types:

{
            "_id": ObjectId("507f1f77bcf86cd799439011"),
            "name": "Vitamin C 1000mg", // String
            "price": 85000, // Number
            "inStock": true, // Boolean
            "tags": ["vitamin", "immune"], // Array
            "manufacturer": { // Nested Object
            "name": "PT Sehat Sejahtera",
            "location": "Jakarta"
            },
            "createdAt": ISODate("2024-03-20T10:00:00Z"), // Date
            "discount": null // Null
            }
        

2.5.4 Embedded vs Referenced Data

Dalam dunia nyata, data jarang berdiri sendiri. Misalnya, satu produk bisa memiliki banyak ulasan, satu pengguna bisa membuat banyak pesanan, dan satu pesanan bisa berisi beberapa produk.
Nah, di MongoDB yang bersifat document-oriented, ada dua cara untuk mengelola hubungan antar data ini: Embedded (disimpan di dalam document) dan Referenced (dihubungkan lewat ID).
Keduanya sama-sama valid, tetapi memiliki konsekuensi berbeda terhadap performa, fleksibilitas, dan kompleksitas query.

1. Embedded Data — Menyatukan Data yang Dekat

Pada pendekatan embedded, data yang berhubungan disimpan langsung di dalam satu document. Bayangkan satu produk beserta daftar ulasannya disimpan bersama seperti berikut:

{
            "name": "Vitamin C",
            "reviews": [
            { "user": "Aiman", "rating": 5 },
            { "user": "Aila", "rating": 4 }
            ]
 }
        
Kapan digunakan?
  • Jika hubungan datanya bersifat one-to-few, artinya jumlah datanya tidak terlalu banyak.
  • Jika data tersebut selalu diakses bersama, misalnya setiap kali Anda membuka detail produk, ulasannya langsung ikut ditampilkan.
  • Jika datanya jarang berubah sendiri-sendiri, alias update biasanya dilakukan sekaligus.
Keunggulan :
  • Lebih cepat diakses karena semua data sudah dalam satu document (satu query cukup).
  • Atomic update — seluruh perubahan dalam satu operasi, sehingga data selalu konsisten.
Kelemahan :
  • Ukuran document bisa membengkak (ingat, batasnya 16MB).
  • Menyulitkan jika bagian data sering berubah sendiri, atau jika satu entitas digunakan di banyak tempat (terjadi duplikasi data).

Contoh Kasus :
Produk e-commerce yang memiliki 3–5 ulasan bisa disimpan dengan cara embedded. Tapi kalau ulasannya ribuan, pendekatan ini tidak efisien.

2. Referenced Data — Memisahkan agar Fleksibel

Jika hubungan data kompleks atau one-to-many dalam jumlah besar, gunakan pendekatan referenced. Artinya, data utama dan data terkait disimpan di collection terpisah, lalu dihubungkan menggunakan ObjectId reference.

// Collection: products
            {
            "_id": ObjectId("product123"),
            "name": "Vitamin C"
            }

            // Collection: reviews
            {
            "_id": ObjectId("review456"),
            "productId": ObjectId("product123"), // Reference
            "user": "Aiman",
            "rating": 5
            }
        

Kapan digunakan? Jika hubungan datanya one-to-many besar, sering diakses terpisah, atau satu entitas muncul di banyak tempat.
  • ✅ Keunggulan: Dokumen ringkas, tidak ada duplikasi, mudah diperbarui.
  • ❌ Kelemahan: Perlu lebih dari satu query (atau populate) untuk mengambil data lengkap.
💡 Analogi:
  • Embedded: Seperti buku harian yang mencatat transaksi dan nama pelanggan di halaman yang sama. Praktis dilihat, tapi lama-lama tebal dan susah dicari.
  • Referenced: Seperti lemari arsip terpisah — satu map untuk pelanggan, satu map untuk transaksi. Anda tinggal mencatat ID pelanggan di transaksi. Lebih teratur dan efisien.





Kesimpulan

MongoDB menggunakan pendekatan non-relasional (NoSQL) yang menyimpan data dalam format dokumen JSON (JavaScript Object Notation). Struktur ini lebih fleksibel dibandingkan database relasional, karena setiap dokumen bisa memiliki field berbeda sesuai kebutuhan. MongoDB menyusun datanya dalam tiga lapisan utama: database, collection, dan document.

Database berfungsi sebagai wadah utama, collection sebagai kumpulan dokumen yang sejenis, dan document sebagai unit data yang berisi pasangan key-value. Dengan pendekatan ini, MongoDB memudahkan pengembang untuk menyimpan, mengelola, dan mengakses data secara cepat dan dinamis tanpa harus mengikuti skema tabel yang kaku seperti pada SQL.

Komentar

Postingan populer dari blog ini

SIPD Chrome Extension untuk Migrasi Data dari SIPD ke SIMDA PINK Th. Anggaran 2022

Mapping Sumber Dana di WP-SIPD

Dokumentasi Aplikasi Migrasi Aset SIMDA BMD