Lewati ke konten utama

Membuat Koleksi di MongoDB: Metode Manual dan Otomatis

Pelajari cara koleksi dibuat di MongoDB, kapan perlu didefinisikan secara eksplisit, dan opsi konfigurasi kunci.
Diperbarui 28 Sep 2026  · 5 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Saat Anda bekerja dengan MongoDB, terutama sebagai pengembang yang berasal dari latar belakang basis data relasional, salah satu hal pertama yang akan Anda perhatikan adalah betapa fleksibelnya desain skema.

Koleksi di MongoDB tidak perlu dibuat secara eksplisit terlebih dahulu, namun ada kalanya masuk akal untuk mendefinisikannya secara eksplisit dan mengonfigurasinya dengan cermat.

Dalam artikel ini, kita akan melihat bagaimana dan kapan Anda mungkin ingin membuat koleksi di MongoDB, beberapa opsi konfigurasi utama yang perlu dipertimbangkan, serta beberapa contoh kode dalam JS dan C# (favorit saya). 

Jangan khawatir, kami memiliki banyak paritas fitur di seluruh driver, jadi banyak hal yang Anda lihat di sini akan dimungkinkan dalam <insert your language of choice>.

Jika Anda baru mengenal basis data NoSQL, pertimbangkan untuk memulai dengan Introduction to NoSQL.

Apa Itu Koleksi MongoDB?

Sebelum kita melihat cara membuat koleksi, mari kita bahas secara singkat apa sebenarnya koleksi itu. 

Jika Anda berasal dari latar belakang SQL, Anda mungkin terbiasa mendengar tentang tabel, baris, dan kolom. Di MongoDB, istilahnya sedikit berbeda. Alih-alih tabel, kita memiliki koleksi, dan alih-alih baris, kita memiliki dokumen dengan field, bukan kolom. 

Salah satu keunggulan MongoDB adalah skema yang dinamis. Artinya, Anda tidak perlu membuat koleksi secara manual sebelum menggunakannya. Jika Anda memasukkan sebuah dokumen ke dalam koleksi yang belum ada, MongoDB akan membuatnya secara otomatis. Misalnya, jika Anda menjalankan: 

db.movies.insertOne({ title: "The Matrix", year: 1999 });

Perintah ini akan mencoba memasukkan satu dokumen untuk film “The Matrix” ke dalam koleksi movies. Jika sudah ada, dokumen akan ditambahkan ke koleksi tersebut. Jika belum ada, koleksi movies akan dibuat sebelum dokumen baru ditambahkan.

Anda juga dapat menambahkan banyak dokumen sekaligus, menggunakan insertMany alih-alih insertOne.

Kapan Perlu Mendefinisikan Koleksi MongoDB Secara Eksplisit

Meskipun Anda dapat membiarkan MongoDB menangani pembuatan koleksi secara otomatis, ada alasan bagus untuk mendefinisikan koleksi terlebih dahulu, terutama dalam skenario produksi. Membuat koleksi secara eksplisit memberi Anda kesempatan untuk:

  • Mengonfigurasi capped collection untuk logging atau caching.
  • Menyiapkan aturan validasi untuk menerapkan batasan pada skema Anda.
  • Menerapkan indeks bawaan tertentu seperti time-to-live (TTL). Indeks pada field tanggal ini akan otomatis menghapus dokumen di koleksi Anda berdasarkan jangka waktu yang Anda tentukan.
  • Mengoptimalkan untuk beban kerja tulis yang tinggi dengan melakukan pra-ukuran koleksi.

Berikut cara Anda membuat koleksi di MongoDB Shell:

db.createCollection("auditLogs", {
  capped: true,
  size: 10485760, // 10 MB
  max: 1000
});

Atau dengan validasi:

db.createCollection("users", {
  validator: {
    $jsonSchema: {
      bsonType: "object",
      required: ["email", "createdAt"],
      properties: {
        email: {
          bsonType: "string",
          pattern: "^.+@.+$"
        },
        createdAt: {
          bsonType: "date"
        }
      }
    }
  }
});

Meski MongoDB mendukung skema yang fleksibel, Anda tetap mungkin ingin menambahkan aturan validasi seperti field wajib atau menentukan properti pada field tertentu, misalnya tipe data atau pemformatan untuk email, seperti terlihat di atas. Ini diperlukan jika Anda ingin memastikan dokumen Anda mengikuti skema tertentu. 

Penerapan skema akan terasa familiar jika Anda berasal dari latar belakang SQL, dan bahkan jika tidak, terkadang aplikasi Anda di produksi perlu memiliki bentuk dokumen yang dapat diprediksi. Jadi validasi sangat cocok untuk hal ini!

Membuat Koleksi MongoDB dengan C# Driver

Dalam aplikasi C#, Anda juga dapat membuat koleksi secara eksplisit menggunakan driver MongoDB. Meskipun tidak diperlukan untuk operasi dasar, di sinilah Anda dapat menetapkan opsi tingkat lanjut secara terprogram.

var options = new CreateCollectionOptions
{
    Capped = true,
    MaxSize = 10485760, // 10 MB
    MaxDocuments = 1000
};

await database.CreateCollectionAsync("auditLogs", options);

Untuk menambahkan validator:

var validator = new BsonDocument
{
    { "$jsonSchema", new BsonDocument
        {
            { "bsonType", "object" },
            { "required", new BsonArray { "email", "createdAt" } },
            { "properties", new BsonDocument
                {
                    { "email", new BsonDocument
                        {
                            { "bsonType", "string" },
                            { "pattern", "^.+@.+$" }
                        }
                    },
                    { "createdAt", new BsonDocument
                        {
                            { "bsonType", "date" }
                        }
                    }
                }
            }
        }
    }
};

var collectionOptions = new CreateCollectionOptions<BsonDocument>
{
    Validator = new BsonDocumentFilterDefinition<BsonDocument>(validator)
};

await database.CreateCollectionAsync("users", collectionOptions);

Untuk pengembang Python, tutorial Introduction to MongoDB and Python adalah sumber yang sangat baik.

Opsi Konfigurasi Koleksi Kunci yang Perlu Diketahui

Saat membuat koleksi secara eksplisit, berikut beberapa opsi yang perlu Anda ketahui:

  • capped: membuat koleksi berukuran tetap
  • size: ukuran maksimum dalam byte untuk capped collection
  • max: jumlah maksimum dokumen yang diizinkan
  • validator: objek JSON dalam sintaks skema yang mendefinisikan validasi skema
  • expireAfterSeconds: digunakan dengan indeks TTL untuk menangani penghapusan otomatis dokumen

Anda juga dapat menerapkan indeks pada saat pembuatan atau sesaat setelahnya. MongoDB tidak akan otomatis membuat indeks kecuali diperlukan untuk _id.

Indeks di MongoDB memungkinkan Anda meningkatkan kinerja pada field yang paling sering diakses. Nilai-nilai tersebut akan di-cache di memori, artinya tidak ada panggilan ke hard drive untuk mengambilnya, yang dapat menghemat banyak waktu dan meningkatkan kinerja saat diakses secara rutin.

Praktik Terbaik untuk Mendefinisikan Koleksi MongoDB

Berikut beberapa panduan untuk membantu Anda memutuskan kapan harus mendefinisikan koleksi secara eksplisit:

  • Pembuatan implisit untuk proof of concept yang cepat atau pengembangan lokal, atau ketika pengguna akhir dapat menghasilkan konten secara dinamis
  • Pembuatan eksplisit ketika Anda ingin menerapkan validasi atau menerapkan pengaturan untuk pengindeksan atau kinerja

Kesimpulan

MongoDB dikenal dengan skema yang fleksibel yang memberi kita keleluasaan dalam menyusun data, termasuk bagaimana kita membuat dan mengelola koleksi. Meskipun pembuatan implisit cepat dan nyaman, definisi koleksi secara eksplisit membuka fitur-fitur kuat seperti validasi skema, perilaku capped, dan penyesuaian kinerja.

Seperti biasa, MongoDB Atlas membuat pengelolaan koleksi menjadi lebih mudah dengan alat berbasis UI, otomatisasi, dan wawasan kinerja bawaan. Dan jika Anda bekerja di .NET, C# driver siap membantu dengan model bertipe kuat dan API yang fasih.

Saat mempertimbangkan praktik terbaik untuk mendefinisikan koleksi MongoDB, memahami prinsip desain basis data fundamental juga dapat bermanfaat.

Selamat ngoding! Semoga koleksi Anda cepat, valid, dan terindeks dengan baik!

FAQs

Apa perbedaan antara pembuatan koleksi implisit dan eksplisit di MongoDB?

  • Pembuatan implisit: MongoDB secara otomatis membuat koleksi saat Anda menyisipkan dokumen ke koleksi yang belum ada. Ini berguna untuk prototyping cepat atau pengembangan.
  • Pembuatan eksplisit: Anda mendefinisikan koleksi secara manual sebelum menggunakannya, sering kali untuk mengonfigurasi pengaturan lanjutan seperti aturan validasi, ukuran capped, atau pengindeksan. Ini direkomendasikan untuk lingkungan produksi. 

Kapan saya harus membuat koleksi secara eksplisit alih-alih membiarkan MongoDB membuatnya secara otomatis?

Anda harus membuat koleksi secara eksplisit ketika: validasi skema, capped collection, pengoptimalan kinerja, dan indeks bawaan.

Bagaimana saya menerapkan skema di MongoDB jika sifatnya tanpa skema?

MongoDB mendukung validasi skema JSON, yang memungkinkan Anda mendefinisikan aturan untuk struktur dokumen.

Apa itu capped collection, dan kapan saya harus menggunakannya?

Capped collection adalah koleksi berukuran tetap yang secara otomatis menimpa dokumen lama saat penuh. 

Bagaimana cara membuat koleksi dengan indeks TTL (Time-To-Live)?

Indeks TTL secara otomatis menghapus dokumen setelah waktu yang ditentukan. Pertama, buat koleksinya, lalu tambahkan indeks.


Luce Carter's photo
Author
Luce Carter
LinkedIn

Luce Carter adalah Senior Developer Advocate di MongoDB, Microsoft MVP, Contentful Dev Hero, penulis Beginning MongoDB Atlas with .NET, serta pencinta kode, sinar matahari, dan belajar.

Topik
MongoDB
Rekayasa Data

Pelajari lebih lanjut tentang MongoDB dengan kursus-kursus ini!

{count, plural, one {Kursus} other {Kursus}}

Pengantar MongoDB di Python

{hours} jam
24.4K
Kuasai manipulasi dan analisis data berstruktur fleksibel menggunakan MongoDB.
Lihat DetailRight Arrow
Mulai Kursus

{count, plural, one {Kursus} other {Kursus}}

Konsep NoSQL

{hours} jam
19.2K
Dalam kursus konseptual ini (tidak memerlukan pemrograman), Anda akan mempelajari empat jenis utama basis data NoSQL dan mesin-mesin populer yang digunakan.
Lihat SelengkapnyaRight Arrow
Terkait

{count, plural, one {blog} other {blogs}}

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

{count, plural, one {blog} other {blogs}}

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

{count, plural, one {blog} other {blogs}}

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

{count, plural, one {blog} other {blogs}}

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya