~/VibeHandbook
PDF Gratis

Database

mongodb.com

MongoDB

Apa itu ini

Bayangkan sebuah map berisi kartu indeks, di mana setiap kartu bisa memuat kolom yang berbeda-beda, bukannya spreadsheet baku di mana setiap baris harus punya kolom yang sama persis. MongoDB bekerja seperti map berisi kartu itu. Ia adalah basis data dokumen yang menyimpan data sebagai dokumen fleksibel (anggap setiap "dokumen" sebagai satu kartu) yang dikelompokkan ke dalam koleksi (collections). Dokumen-dokumen ini disimpan dalam format bernama BSON, yaitu bentuk biner MongoDB dari (JavaScript Object Notation), cara umum untuk menuliskan data sebagai kolom bernama. Alih-alih tabel dan baris yang kaku, setiap dokumen bisa punya bentuknya sendiri, sehingga mudah untuk mengembangkan model data dengan cepat. MongoDB adalah pilihan populer untuk aplikasi yang datanya secara alami berbentuk objek bersarang (nested).

Kelebihan

  • Skema fleksibel: dokumen bisa bervariasi dan berkembang tanpa migrasi.
  • Data langsung memetakan ke objek aplikasi, mengurangi kode penerjemahan (translation code).
  • Bahasa query yang kaya ditambah aggregation pipeline yang kuat.
  • Penskalaan horizontal (horizontal scaling) lewat sharding bawaan.
  • Dukungan kuat untuk kolom bersarang dan array.

Kompromi (trade-off)

  • Mudah menghasilkan data yang tidak konsisten tanpa desain skema yang disiplin.
  • Transaksi multi-dokumen memang ada, tetapi lebih berat dibanding pada penyimpanan relasional.
  • Join ($lookup) terbatas dibanding (Structured Query Language); data sering kali didenormalisasi.
  • Denormalisasi (menyimpan salinan data yang sama di lebih dari satu tempat untuk menghindari pencarian/lookup) bisa menduplikasi data dan mempersulit pembaruan.

Kapan menggunakannya

Pilih MongoDB untuk manajemen konten, katalog, profil pengguna, pencatatan event (event logging), dan aplikasi dengan data yang terus berkembang atau berbentuk hierarkis, di mana dokumen lebih cocok dibanding tabel yang ternormalisasi.

Kecocokan dengan vibe coding

Saat mengarahkan AI, jangan biarkan "tanpa skema" berarti "tanpa rencana." Minta AI untuk mendefinisikan bentuk dokumen yang jelas dan menegakkannya dengan validasi JSON Schema atau ODM (Object-Document Mapper) seperti Mongoose, termasuk kolom wajib dan tipe datanya. Beri tahu AI apakah data terkait harus disematkan (embed) atau dirujuk lewat id, berdasarkan pola akses datanya, dan minta ditambahkan indeks untuk kolom yang kamu gunakan dalam query dan pengurutan. Satu tips bagus: minta AI menggunakan objek query yang diparameterisasi (parameterized query objects), artinya jangan pernah menyusun query dengan menempelkan teks mentah dari pengguna begitu saja. Minta juga AI menjelaskan alasan pilihannya antara embed dan reference. Dengan begitu kamu memahami biaya baca, tulis, dan pembaruan datanya.

// Schema validation keeps documents consistent
db.createCollection("users", {
  validator: {
    $jsonSchema: {
      bsonType: "object",
      required: ["email", "createdAt"],
      properties: {
        email:     { bsonType: "string" },
        createdAt: { bsonType: "date" },
        roles:     { bsonType: "array", items: { bsonType: "string" } }
      }
    }
  }
});

db.users.createIndex({ email: 1 }, { unique: true });

// Aggregation: count active users per role
db.users.aggregate([
  { $match: { active: true } },
  { $unwind: "$roles" },
  { $group: { _id: "$roles", count: { $sum: 1 } } }
]);