Lewati ke konten utama

Tutorial MongoDB: Cara Menyiapkan dan Melakukan Query pada Database MongoDB

Pelajari cara menghubungkan dan menganalisis database MongoDB di Python.
Diperbarui 28 Sep 2026  · 10 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Anda mungkin sudah pernah mendengar atau bahkan bekerja dengan database relasional. Format baris–tabel adalah struktur paling populer dan intuitif untuk menyimpan informasi. Sayangnya, tidak semua data yang Anda temui bisa disimpan dalam baris dan tabel. Faktanya, begitu banyak masalah di dunia nyata memerlukan database non-relasional. Jadi, adakah alternatifnya?

Jawabannya IYA! Ada empat jenis database yang tidak menggunakan baris atau tabel. Database ini disebut NoSQL, karena Anda tidak bisa menggunakan SQL untuk melakukan query. Jenis-jenisnya adalah:

  • Database key-value
  • Database dokumen
  • Database kolom keluarga (column family)
  • Database graf

Artikel ini berfokus pada database dokumen dan cara menggunakan server bernama MongoDB. Namun sebelum masuk ke detail teknis, mari lihat dulu use case dari database dokumen. Anda dapat melihat panduan terpisah kami tentang database graf untuk informasi lebih lanjut.

Kapan Menggunakan Database Dokumen?

Salah satu use case utama memilih database dokumen adalah ketika Anda memiliki data yang tidak pas dimasukkan ke dalam skema baku seperti tabel. Banyak proses atau aplikasi di berbagai industri menyimpan tipe data seperti ini. Berikut beberapa contohnya:

  • Aplikasi web dan seluler: Profil pengguna, preferensi, konten, dan interaksi
  • Sistem manajemen konten: Menyimpan beragam media seperti teks, gambar, video, GIF, dll.
  • Platform e-commerce: Katalog produk, informasi pelanggan, riwayat pesanan, inventaris, dll.
  • Gim: menyimpan profil pemain, peringkat papan peringkat
  • Logging dan pengumpulan data: volume besar log, event, metrik untuk analisis, dll.

Coba pikirkan bagaimana data yang dikumpulkan dari industri-industri ini dapat dimasukkan ke dalam tabel. Misalnya, platform e-commerce akan kesulitan menyimpan katalog produk dalam skema yang telah ditentukan. Produk yang berbeda memiliki atribut yang berbeda atau bahkan jumlah atribut yang berbeda. Apakah Anda perlu 10 kolom untuk menyimpan 10 atribut fisik drone dari 100 merek berbeda atau cukup 5–6 kolom untuk menyimpan informasi buku?

Database berbasis tabel tidak bisa membantu Anda dalam skenario seperti itu. Dengan menggunakan database dokumen seperti MongoDB, Anda memperoleh manfaat berikut:

  • Tidak ada biaya pengembangan awal untuk merancang skema
  • Dokumen (data) dapat bervariasi dari waktu ke waktu (termasuk tipe data, jumlah atribut, dll.)
  • Database dokumen menghindari join, yang menghasilkan proses query jauh lebih cepat
  • Intuitif bagi developer karena database dokumen sebagian besar adalah file JSON besar, yang pada dasarnya adalah kamus raksasa bagi para Pythonista.
  • Database dokumen berskala horizontal, artinya tidak membutuhkan sumber daya komputasi yang semakin besar seiring pertumbuhan basis data.

Sekarang, mari lihat konsep inti seputar database dokumen dan MongoDB.

Konsep Inti Seputar MongoDB

Saya sudah berulang kali menyebut database dokumen sampai titik ini, tetapi sebenarnya apa itu? Berikut konsep utamanya:

  • Dokumen: data disimpan dalam objek yang disebut dokumen. Secara sederhana, dokumen mirip dengan objek key-value JSON. Satu dokumen setara dengan satu baris dalam tabel. Jika Anda programmer Python, anggap saja dokumen sebagai dictionary, dan itu sudah tepat. Ingat saja bahwa dokumen dapat memiliki dokumen bersarang, yang merupakan salah satu fitur utama database dokumen.
  • Koleksi: koleksi seperti tabel dalam database relasional, tetapi alih-alih berisi baris, mereka berisi, ya, dokumen. Koleksi adalah struktur data besar yang dapat berisi ribuan atau jutaan dictionary.
  • Tanpa skema: Di sinilah menariknya. Satu koleksi dapat memiliki dokumen dengan ukuran bervariasi. Misalnya, dokumen 1 bisa memiliki 10 pasangan key-value sementara dokumen 2 bisa memiliki 15 (selama informasinya masih dalam kategori/topik yang sama, seperti produk, agar koleksi tetap masuk akal).

Berikut tabel ringkas yang merangkum perbedaan antara database relasional dan database dokumen:

Fitur Database Dokumen (mis., MongoDB) Database Relasional (mis., MySQL, PostgreSQL)
Struktur Data Menyimpan data sebagai dokumen (mis., JSON, BSON), memungkinkan struktur yang fleksibel dan hierarkis. Menyimpan data dalam tabel dengan baris dan kolom, mengikuti skema yang telah ditentukan.
Fleksibilitas Skema Tanpa skema: Dokumen dapat memiliki struktur yang bervariasi, memungkinkan field dan tipe data yang berbeda. Skema tetap: Memerlukan skema yang telah ditentukan dengan kolom dan tipe data spesifik.
Bahasa Query Menggunakan MongoDB Query Language (MQL) atau serupa, yang berbasis objek dan lebih fleksibel. Menggunakan SQL (Structured Query Language) untuk melakukan query pada data terstruktur.
Join Menghindari join dengan menanamkan data terkait di dalam dokumen (denormalisasi). Mendukung join yang kompleks antar tabel (normalisasi).
Kinerja Baca/tulis lebih cepat untuk data tidak terstruktur atau semi-terstruktur. Menghindari overhead dari join. Kinerja kuat untuk data terstruktur, tetapi join dapat memperlambat query.
Skalabilitas Dapat diskalakan secara horizontal: Dapat mendistribusikan data di banyak server menggunakan sharding. Biasanya diskalakan secara vertikal: Bergantung pada perangkat keras yang lebih kuat, meski beberapa mendukung skalabilitas horizontal (mis., dengan partisi).
Dukungan Transaksi Mendukung transaksi ACID multi-dokumen (mulai MongoDB 4.0 ke atas), tetapi awalnya dirancang untuk operasi non-transaksional. Dukungan penuh untuk transaksi yang memenuhi ACID, memberikan konsistensi dan keandalan yang kuat.
Use Case Paling cocok untuk data tidak terstruktur atau semi-terstruktur seperti profil pengguna, log, katalog, dan struktur data fleksibel. Ideal untuk data terstruktur dengan relasi yang jelas, seperti catatan keuangan atau perencanaan sumber daya perusahaan (ERP).
Relasi Data Mendukung data tertanam (denormalisasi), sehingga memudahkan pengambilan informasi terkait dari satu query. Database relasional bergantung pada foreign key untuk membangun relasi antar tabel (normalisasi).
Pengindeksan Mendukung pengindeksan tetapi tidak selengkap dan secanggih variasi pengindeksan pada database relasional. Kemampuan pengindeksan kuat, mendukung banyak tipe indeks (mis., B-tree, hash) untuk optimasi kinerja yang lebih baik.
Konsistensi Menyediakan konsistensi eventual pada pengaturan terdistribusi tetapi juga menawarkan konsistensi kuat saat diperlukan (melalui transaksi ACID). Menjamin konsistensi kuat dalam banyak kasus berkat transaksi ACID dan integritas relasional.
Penskalaan Volume Data Mudah diskalakan untuk menampung jumlah data besar dengan menambah server (sharding). Dapat diskalakan secara vertikal, tetapi penskalaan horizontal memerlukan konfigurasi yang lebih kompleks (mis., partisi).
Integritas Data Integritas data dikelola dalam tiap dokumen, namun mengelola relasi antar dokumen bisa lebih menantang. Dukungan bawaan yang kuat untuk integritas data melalui primary key dan foreign key, serta constraint seperti UNIQUE dan NOT NULL.
Keramahan bagi Pengembang Ramah pengembang: Pemodelan data fleksibel, bekerja baik dengan aplikasi modern (mis., JSON, REST API). Pemodelan data kaku tetapi dipahami dengan baik oleh developer yang familier dengan SQL dan data terstruktur.

Mari benar-benar mulai bekerja dengan dokumen di MongoDB!

Penyiapan MongoDB: Menghubungkan ke Sumber Data

Untuk melakukan query pada database dokumen, kita perlu memasang server MongoDB. Berikut instruksi spesifik platform:

  • Untuk Windows, ikuti instruksi pada tautan ini.
  • Untuk sistem mirip Unix, Anda dapat memasang MongoDB dari terminal:
$ sudo apt-get install -y mongodb

Lalu, di dalam lingkungan virtual, pasang pustaka pymongo dan requests. pymongo adalah adapter Python resmi untuk server MongoDB. Kita akan memerlukan pustaka requests untuk mengambil data dari API.

$ pip install pymongo
$ pip install requests

Selanjutnya, dari terminal, jalankan server MongoDB dengan perintah berikut:

$ sudo service mongodb start

Sekarang, kita siap memuat beberapa data ke dalam database dokumen. Ada dua skenario saat melakukannya:

  1. Anda memiliki data secara lokal dalam format yang sesuai seperti JSON, BSON, YAML, atau XML.
  2. Anda perlu mengambil data dari sumber eksternal, biasanya API.

Kita akan membahas keduanya. Pertama, mari muat koleksi bernama drone_races.json secara lokal. Berikut cuplikannya:

import json

from pymongo import MongoClient

# Establish connection to MongoDB
client = MongoClient("localhost", 27017)
# Create a database named "drones"
drones = client["drones"]
# Create a collection named "races"
races = drones["races"]

# Load dataset into MongoDB
with open("data/drone_races.json", "r") as file:
   data = json.load(file)
   races.insert_many(data)

Dua objek terpenting bagi kita adalah drones (sebuah database) dan races (sebuah koleksi). Sebagian besar fungsi dan metode akan terkait dengan koleksi. Objek database sebagian besar digunakan untuk mengelola koleksi.

Sekarang, mari lihat cara memuat data yang sama menggunakan API. Saya telah menyimpan informasi tersebut sebagai API menggunakan layanan bernama Mockaroo. Berikut cuplikannya:

import requests
from pymongo import MongoClient

# Fetch data from the API
api_url = (
   "https://my.api.mockaroo.com/drone_race_matches.json?key=6f5a6b50"
)
response = requests.get(api_url)

if response.status_code == 200:
   data = response.json()  # Get the JSON data from the API

   # Establish a connection to MongoDB
   client = MongoClient()

   # Access or create a specific database
   drones = client["drones"]

   # Access or create a specific collection within the database
   races = drones["races"]

   # Insert the fetched data into the MongoDB collection
   races.insert_many(data)
else:
   print("Failed to fetch data from the API.")

Kita telah memuat beberapa data ke dalam koleksi races dari database dokumen drones, atau benarkah? Mari periksa dengan menggunakan query!

Query MongoDB Dasar

Menghitung dokumen di MongoDB

Kita perlu menghitung dokumen di dalamnya untuk mengetahui apakah ada data dalam sebuah koleksi. Kita akan menggunakan metode count_documents untuk melakukannya:

>>> races.count_documents({})
9040

Perhatikan dictionary kosong yang diberikan ke count_documents. Dictionary itu disebut filter di MongoDB. Seiring berjalannya tutorial, kita akan mempelajari cara mengisi dictionary untuk membuat berbagai jenis filter. Saat ini, kita belum memiliki filter. Kode di atas sama dengan SELECT COUNT(*) FROM table_name dalam SQL.

Kita mendapatkan 9040 dokumen — yay! Sekarang, mari lihat sebagian data.

Mengekstrak satu dokumen di MongoDB

Untuk melihat satu dokumen dengan pymongo, kita dapat menggunakan metode find_one:

from pprint import pprint

>>> pprint(races.find_one())
{'_id': ObjectId('659d31e9255ec0cf4bab529d'),
'laps': 3,
'league': 'F1 Drones',
'location': {'city': 'Ford',
             'country': 'United Kingdom',
             'date': 'error: invalid date "2024-10-25"',
             'venue': 'Manhattan Seas'},
'name': 'Honorable',
'pilots': {'drone': 'DJI3-old',
           'finishing_position': 66,
           'name': 'Kariotta Cow',
           'qualification_time': 27.39,
           'team': 'Sky Crusaders',
           'telemetry': {'altitude': 34.3,
                         'battery_voltage': 12.1,
                         'speed': 68.3,
                         'timestamp': 'error: invalid date '
                                      '"2024-10-25T14:09:26Z"'}},
'sponsors': ['Fat Shark', 'DJI', 'Etisalat'],
'weather_conditions': 'snowy'}

Perhatikan field (key) dari dokumen ini. Dokumen ini menyimpan informasi tentang satu balapan drone dan mencakup informasi seperti:

  • Jumlah putaran
  • Kondisi cuaca saat pertandingan
  • Para pilot (tidak semuanya) selama pertandingan
  • Sponsor pertandingan, dan seterusnya.

Dokumen juga memiliki field wajib _id, yang merupakan hash unik.

Memilih semua dokumen di MongoDB

count_documents selalu mengembalikan angka, tetapi terkadang, kita ingin melihat data yang cocok dengan query kita. Untuk melakukannya, kita dapat menggunakan versi lebih kuat dari find_one, yaitu find:

from pprint import pprint

for race in races.find():
   pprint(race)
   break

{'_id': ObjectId('659d31e9255ec0cf4bab529d'),
'laps': 3,
'league': 'F1 Drones',
'location': {'city': 'Ford',
             'country': 'United Kingdom',
             'date': 'error: invalid date "2024-10-25"',
             'venue': 'Manhattan Seas'},
'name': 'Honorable',
'pilots': {'drone': 'DJI3-old',
           'finishing_position': 66,
           'name': 'Kariotta Cow',
           'qualification_time': 27.39,
           'team': 'Sky Crusaders',
           'telemetry': {'altitude': 34.3,
                         'battery_voltage': 12.1,
                         'speed': 68.3,
                         'timestamp': 'error: invalid date '
                                      '"2024-10-25T14:09:26Z"'}},
'sponsors': ['Fat Shark', 'DJI', 'Etisalat'],
'weather_conditions': 'snowy'}

find dengan query kosong (tanpa argumen) mengembalikan dokumen satu per satu, namun itu bukan yang kita inginkan! Kita ingin menjalankan query agar dapat menjawab pertanyaan menarik tentang data kita. Di sinilah dokumen filter akan sangat berguna.

Memilih berdasarkan suatu kondisi di MongoDB

Mari mulai dengan filter paling sederhana — mencocokkan dokumen ketika suatu field bernilai sama dengan suatu nilai. Ini setara dengan:

SELECT *
 FROM table_name
WHERE field = value

Mari lakukan di MongoDB:

criteria = {"sponsors": "Fat Shark"}

fat_shark_races = races.count_documents(criteria)
fat_shark_races

6194

Di atas, kita memilih balapan dengan "Fat Shark" sebagai sponsor. Sintaksnya cukup dictionary yang memetakan field sponsors ke "Fat Shark".

Bahasa query MongoDB tidak akan disebut bahasa jika tidak memiliki beberapa operator ketaksamaan umum. Berikut cara menggunakan operator "kurang dari":

criteria = {"pilots.qualification_time": {"$lt": 10}}

quick_races = races.count_documents(criteria)
quick_races

3061

Query di atas memperkenalkan empat fitur baru dari bahasa query MongoDB (MQL):

  • Anda dapat mengakses sub-field dengan notasi titik. pilots.qualification_time mengekstrak waktu kualifikasi yang bersarang di dalam field pilots.
  • Hampir semua operator di MQL diawali dengan tanda dolar.
  • Operator digunakan dalam dokumen bersarang seperti di atas.
  • $lt adalah operator "kurang dari".

Jadi, hasil query ini memberi tahu kita bahwa ada 3061 pertandingan di mana salah satu pilot memiliki waktu kualifikasi kurang dari 10 detik. Query ini dimungkinkan dengan operator $lt. Berikut saudara-saudaranya:

  • $lte: kurang dari atau sama dengan
  • $gt: lebih dari
  • $gte: lebih dari atau sama dengan.

Sintaksnya sama seperti $lt.

Memilih dengan operator kondisi logis di MongoDB

MQL juga menyertakan operator kondisi logis seperti $and dan $or. Mari mulai dengan yang terakhir.

Kita akan mengambil balapan dengan lokasi United Kingdom atau sponsor Etisalat:

criteria = {
   "$or": [
       {"location.country": "United Kingdom"},
       {"sponsors": "Etisalat"},
   ]
}

>>> races.count_documents(criteria)

6223

Sekali lagi, gunakan tombol Explain code untuk penjelasan terperinci.

Ada 6223 dokumen yang cocok dengan kriteria kita. Untuk menggunakan logika OR bagi beberapa nilai pada field yang sama, kita dapat menggunakan operator $in.

Sebagai contoh, kita dapat memeriksa kondisi cuaca buruk dengan cara berikut:

criteria = {
   "weather_conditions": {"$in": ["rainy", "snowy", "cloudy"]}
}

>>> races.count_documents(criteria)

5508

Query ini akan merepotkan jika ditulis dengan operator $or. Sekarang, lanjut ke $and.

Kali ini, kita ingin menemukan balapan dengan lokasi Australia DAN sponsor Fat Shark. Berikut cara melakukannya dengan $and:

criteria = {
   "$and": [
       {"location.country": "Australia"},
       {"sponsors": "Fat Shark"},
   ]
}
>>> races.count_documents(criteria)
193

Namun dalam praktiknya, Anda jarang menggunakan $and karena dapat diimplementasikan dengan cara yang jauh lebih sederhana:

criteria = {
   "location.country": "Australia",
   "sponsors": "Fat Shark",
}

races.count_documents(criteria)
193

Cukup tambahkan lebih banyak pasangan key-value ke dokumen filter untuk mendapatkan operator logis AND.

Akhirnya, ada operator $nin, yang memeriksa ketidakanggotaan. Misalnya, kita dapat mengembalikan semua pertandingan yang tidak diadakan di United States, United Kingdom, atau Australia:

criteria = {
   "location.country": {
       "$nin": ["United States", "United Kingdom", "Australia"]
   }
}

>>> races.count_documents(criteria)
126

Ini hanya menyisakan United Arab Emirates sebagai negara, jadi query di atas sebenarnya bisa ditulis sebagai:

criteria = {"location.country": "United Arab Emirates"}

>>> races.count_documents(criteria)
126

Namun, Anda paham maksudnya.

Melakukan query nilai null atau hilang di MongoDB

Memeriksa nilai null atau hilang adalah operasi universal dalam semua tugas analisis data. Karena itu, ada operator untuk itu di MongoDB — $exists. Berikut dua contoh yang memeriksa apakah field tertentu ada:

criteria = {"location.district": {"$exists": True}}

>>> races.count_documents(criteria)

0

Hmm, ternyata district Field laps tidak ada pada dokumen mana pun. Namun, field tersebut harus ada di semua dokumen karena merupakan informasi kunci tentang balapan.

criteria = {"laps": {"$exists": True}}

races.count_documents(criteria)
9040

Seperti yang diharapkan, semua dokumen memiliki field laps. Namun bagaimana dengan field yang ada tetapi bernilai null? Kita juga bisa memeriksanya:

criteria = {"pilots.finishing_position": None}

races.count_documents(criteria)
0

Dengan menggunakan objek bawaan None di Python, kita dapat memeriksa nilai suatu field apakah hilang.

Ada beberapa skenario lanjutan yang juga memerlukan pemeriksaan null atau keberadaan. Misalnya, Anda mungkin ingin memeriksa apakah elemen tertentu dari beberapa array bersarang yang besar ada.

Untuk melakukan ini, kita dapat menggunakan sintaks pengindeksan array di MQL. Misalnya, untuk menemukan balapan dengan hanya satu sponsor, kita perlu memeriksa apakah elemen kedua dari array sponsors ada:

# Penghitungan dimulai dari 0 seperti biasa
criteria = {"sponsors.1": {"$exists": False}}

races.count_documents(criteria)
2929

Dan semudah menambahkan nomor indeks elemen ke key. Jadi, dalam koleksi kita, hampir 3000 balapan disponsori oleh hanya satu entitas.

Sintaks pengindeksan array ini berfungsi untuk banyak operator lain, bukan hanya $exists.

Proyeksi (membatasi field)

Satu hal terakhir yang akan kita bahas dalam tutorial ini adalah proyeksi. Sampai titik ini, hasil query kita menyertakan setiap field dalam tiap dokumen. Ini tidak ideal ketika dokumen Anda memiliki ratusan field. Bayangkan betapa melelahkannya output saat Anda mencetaknya!

Jadi, untuk memilih field yang ingin kita kembalikan, kita dapat menggunakan proyeksi. Berikut caranya:

criteria = {"pilots.telemetry.speed": {"$gte": 20}}
projection = {
   "sponsors": 1,
   "location.country": 1,
   "pilots.telemetry.speed": 1,
   "pilots.name": 1,
}

fast_pilots = races.find(criteria, projection)

for pilot in fast_pilots:
   pprint(pilot)
   break

Pada kasus di atas, kita menulis kriteria filter seperti biasa tetapi kali ini kita mendefinisikan dokumen lain dengan empat field disetel ke 1. Jika kita meneruskan dokumen projection ini sebagai argumen kedua ke find atau count_documents, kita hanya akan mendapatkan field yang disetel ke 1 pada output.

{'_id': ObjectId('659d31e9255ec0cf4bab529d'),
'location': {'country': 'United Kingdom'},
'pilots': {'name': 'Kariotta Cow', 'telemetry': {'speed': 68.3}},
'sponsors': ['Fat Shark', 'DJI', 'Etisalat']}

Meskipun kita memilih hanya empat field, field _id yang bandel tetap ikut. Untuk menekan perilaku ini, setel ke 0 dalam dictionary projection:

criteria = {"pilots.telemetry.speed": {"$gte": 20}}
projection = {
   "sponsors": 1,
   "location.country": 1,
   "pilots.telemetry.speed": 1,
   "pilots.name": 1,
   "_id": 0,
}

fast_pilots = races.find(criteria, projection)

for pilot in fast_pilots:
   pprint(pilot)
   break

{'location': {'country': 'United Kingdom'},
'pilots': {'name': 'Kariotta Cow', 'telemetry': {'speed': 68.3}},
'sponsors': ['Fat Shark', 'DJI', 'Etisalat']}

Sekarang, ini lebih rapi.

Terakhir, untuk mengembalikan semua field kecuali beberapa, kita bisa menyetel field tersebut ke 0:

projection = {"_id": 0, "league": 0, "pilots": 0}

# Kriteria kosong untuk yang ini
races.find_one({}, projection)

{'name': 'Honorable',
'location': {'venue': 'Manhattan Seas',
 'city': 'Ford',
 'country': 'United Kingdom',
 'date': 'error: invalid date "2024-10-25"'},
'sponsors': ['Fat Shark', 'DJI', 'Etisalat'],
'laps': 3,
'weather_conditions': 'snowy'}

Seperti yang Anda lihat, kali ini kita memiliki semua field kecuali _id, league, dan pilots.

Penutup

Tutorial ini belum sepenuhnya mencerminkan besarnya MongoDB sebagai alat manajemen database. Hari ini, kita hanya membahas query GET (query untuk mengambil informasi), tetapi MongoDB juga memungkinkan spesialis data untuk menyisipkan, memperbarui, atau menghapus informasi dalam database dokumen. Kita juga belum membahas satu kelas query — agregasi.

Semua topik ini berada di luar cakupan artikel dan memerlukan sumber daya tambahan untuk mempelajarinya. Mengapa tidak memeriksa yang berikut ini:

FAQs

Bagaimana perbedaan database dokumen seperti MongoDB dengan database relasional?

Database dokumen, seperti MongoDB, menyimpan data dalam dokumen (sering kali dalam format mirip JSON), yang dapat berisi struktur data bersarang. Ini berbeda dari database relasional, yang menyimpan data dalam baris dan tabel dengan skema tetap. Database dokumen memungkinkan fleksibilitas lebih karena skemanya dinamis, artinya setiap dokumen dapat memiliki field dan tipe data yang berbeda. Hal ini membuat MongoDB cocok untuk data tidak terstruktur atau semi-terstruktur, tidak seperti database relasional yang memerlukan skema yang telah ditentukan.

Mengapa saya harus menggunakan MongoDB alih-alih database relasional?

MongoDB bermanfaat saat bekerja dengan data yang tidak pas dimasukkan ke dalam struktur tabular. Gunakan MongoDB jika data Anda memiliki skema yang fleksibel, jika Anda memperkirakan perubahan struktur data yang sering, atau jika Anda perlu menangani volume besar data tidak terstruktur. Ini juga pilihan yang baik untuk aplikasi yang memerlukan operasi baca dan tulis berkecepatan tinggi dalam skala besar, seperti e-commerce, logging, dan sistem manajemen konten.

Bahasa pemrograman apa yang kompatibel dengan MongoDB?

MongoDB kompatibel dengan beragam bahasa pemrograman, termasuk Python, Java, JavaScript, Node.js, Go, Ruby, dan C#, melalui driver dan pustaka resmi. Pustaka Python pymongo lazim digunakan untuk berinteraksi dengan MongoDB dalam aplikasi data science. MongoDB juga terintegrasi dengan baik dengan kerangka kerja modern seperti Django, Flask, dan Express.js.

Bagaimana MongoDB menangani data berskala besar dan penskalaan horizontal?

MongoDB dirancang untuk skala horizontal melalui sharding, di mana data didistribusikan di beberapa server untuk mengelola data berskala besar secara efisien. Seiring pertumbuhan data Anda, MongoDB dapat mendistribusikan beban ke banyak mesin, memungkinkan kinerja dan kapasitas yang lebih baik. Ini membuat MongoDB ideal untuk aplikasi big data atau yang mengalami pertumbuhan volume data yang cepat.

Bisakah MongoDB menangani query kompleks seperti database SQL?

Ya, MongoDB dapat menangani query yang kompleks, tetapi bahasa query-nya (MQL, MongoDB Query Language) cukup berbeda dari SQL. MongoDB mendukung filter, proyeksi, operator logis, dan agregasi untuk melakukan query canggih, memungkinkan Anda mengambil, memfilter, dan mentransformasikan data. Namun, tidak seperti database SQL, MongoDB tidak mendukung join dengan cara yang sama, karena dirancang untuk mendenormalisasi data ke struktur dokumen yang fleksibel.

Apakah MongoDB cocok untuk analitik waktu nyata?

MongoDB dapat digunakan untuk analitik waktu nyata, tetapi kinerjanya sangat bergantung pada bagaimana data disusun dan diindeks. Dengan memanfaatkan pengindeksan yang kuat dan kerangka kerja agregasi MongoDB, Anda dapat menjalankan query waktu nyata dan menghasilkan insight secara efisien. Namun, untuk tugas analitik yang lebih kompleks, Anda dapat mempertimbangkan mengintegrasikan MongoDB dengan alat seperti Apache Spark atau menggunakan kerangka kerja agregasi untuk menangani pemrosesan waktu nyata dalam skala besar.

Apa saja fitur keamanan di MongoDB?

MongoDB menyediakan beberapa fitur keamanan, termasuk otentikasi, otorisasi (role-based access control), enkripsi (saat transit dan saat tersimpan), dan audit. Enterprise Edition MongoDB menawarkan fitur keamanan tambahan seperti integrasi LDAP dan otentikasi Kerberos untuk keamanan tingkat perusahaan. Fitur-fitur ini membantu mengamankan data sensitif sambil mempertahankan kepatuhan pada regulasi industri.

Bisakah MongoDB menangani transaksi ACID?

Ya, MongoDB mendukung transaksi yang memenuhi ACID, khususnya mulai versi 4.0. Ini memungkinkan transaksi multi-dokumen, mirip dengan yang ada di database relasional, memastikan atomicity, consistency, isolation, dan durability untuk operasi yang melibatkan banyak dokumen atau koleksi. Hal ini membuat MongoDB lebih cocok untuk skenario yang memerlukan jaminan transaksi.

Apa perbedaan JSON dan BSON di MongoDB?

Walaupun JSON adalah format yang dapat dibaca manusia dan umum digunakan untuk merepresentasikan data, BSON (Binary JSON) adalah format penyimpanan MongoDB. BSON memungkinkan penyimpanan dan pengambilan data yang lebih efisien serta mendukung tipe data tambahan seperti tanggal dan data biner, yang tidak didukung secara native oleh JSON. BSON juga menambahkan lebih banyak metadata, yang meningkatkan kinerja saat penyimpanan dan pengambilan dokumen.


Bexruz (Bex) Tuychiev's photo
Author
Bexruz (Bex) Tuychiev
LinkedIn

Saya adalah kreator konten data science dengan pengalaman lebih dari 2 tahun dan salah satu dengan jumlah pengikut terbesar di Medium. Saya suka menulis artikel mendalam tentang AI dan ML dengan sedikit gaya sarkastik—karena harus ada sesuatu untuk membuatnya tidak terlalu membosankan. Saya telah menghasilkan lebih dari 130 artikel dan satu kursus di DataCamp, dengan satu lagi sedang dalam proses. Konten saya telah dilihat oleh lebih dari 5 juta pasang mata, dan 20 ribu di antaranya menjadi pengikut di Medium dan LinkedIn. 

Topik
Python
Rekayasa Data

Mulai Perjalanan Database Non-Relasional Anda di DataCamp Hari 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}}

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}}

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}}

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