Lewati ke konten utama

Tutorial Notasi Titik MongoDB: Mengekueri Field Tersarang

Pelajari beberapa teknik kueri untuk dokumen dan array bersarang di MongoDB.
Diperbarui 28 Sep 2026  · 5 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Jika Anda baru mulai mencoba MongoDB, kemungkinan Anda sampai pada titik di mana dokumen Anda terlihat agak kompleks. Dokumen ini mungkin berubah dari data datar seperti relasional menjadi sesuatu dengan objek bersarang, array bersarang, dan mungkin bahkan empat atau lima tingkat susunan. Jadi, bagaimana cara melakukan kueri data ini ketika berada beberapa lapis ke dalam?

Dalam tutorial singkat ini, kita akan melihat notasi titik di MongoDB dan bagaimana kita dapat dengan cepat dan mudah memfilter dokumen berdasarkan data yang berisi nilai tertentu di field bersarang.

Saat merujuk notasi titik, yang dimaksud adalah pemisahan field bersarang dengan pembatas berupa karakter titik. Sebagai contoh:

root_field.nested_field_1.next_layer_nested_field_1

Untuk setiap lapisan susunan, kita cukup menambahkan karakter titik yang memisahkan lapisan tersebut saat melakukan kueri. Kita akan melihat contoh yang lebih lengkap seiring berjalannya tutorial ini.

Jika Anda baru mulai menggunakan MongoDB, pastikan untuk melihat kursus Introduction to MongoDB in Python di DataCamp.

Prasyarat

Agar berhasil mengikuti tutorial ini, Anda perlu memiliki instance MongoDB yang telah dideploy dan dikonfigurasi. Artinya, diharapkan Anda sudah siap untuk mulai menggunakan MongoDB. Anda juga sebaiknya memiliki setidaknya pemahaman dasar tentang melakukan kueri pada koleksi di MongoDB. Dokumentasi mungkin menjadi titik awal yang baik jika Anda membutuhkan bantuan.

Untuk contoh ini, kita akan menggunakan data berikut di dalam basis data "dbinc" dan koleksi "people":

[
    {
        "name": "Nic Raboy",
        "websites": [
            {
                "type": "other",
                "name": "Portfolio",
                "url": "https://www.nraboy.com"
            },
            {
                "type": "social",
                "name": "LinkedIn",
                "url": "https://www.linkedin.com/in/nraboy"
            }
        ],
        "employment": {
            "employer": "MongoDB",
            "address": {
                "street": "1633 Broadway",
                "city": "New York",
                "state": "New York",
                "postal_code": 10019
            }
        }
    },
    {
        "name": "Tony Kim",
        "websites": [
            {
                "type": "social",
                "name": "LinkedIn",
                "url": "https://www.linkedin.com/in/hyung-kim/"
            },
            {
                "type": "coding",
                "name": "GitHub",
                "url": "https://github.com/hjkmines"
            }
        ],
        "employment": {
            "employer": "MongoDB",
            "address": {
                "street": "1633 Broadway",
                "city": "New York",
                "state": "New York",
                "postal_code": 10019
            }
        }
    }
]

Data di atas merepresentasikan dua dokumen yang cukup kompleks karena memiliki objek dan array bersarang. Sekadar informasi, MongoDB mendukung lebih dari 100 tingkat susunan dalam dokumen BSON.

Jika Anda berencana mengikuti langkah-langkahnya, pastikan dokumen-dokumen ini ada di instance MongoDB Anda.

Mengekueri Data di MongoDB dengan Berbagai Pendekatan

Kita akan mulai dari yang sederhana dan perlahan bergerak ke ranah yang lebih rumit. Kabar baiknya, rumit di sini tidak selalu berarti sulit.

Misalkan kita ingin menemukan semua orang dalam koleksi yang bekerja untuk MongoDB. Kita dapat menjalankan kueri seperti berikut:

use dbinc;

db.people.find({
	"employment.employer": "MongoDB"
});

Pada contoh ini, employer merupakan field bersarang di dalam objek employment. Kita dapat melakukan kueri terhadap field tersebut menggunakan notasi titik, yakni field yang dipisahkan oleh karakter titik. Ini tidak berbeda dengan saat kita ingin menemukan semua orang yang bekerja di New York. Kita bisa melakukan seperti berikut:

use dbinc;

db.people.find({
	"employment.address.state": "New York"
});

Pada kueri di atas, kita menelusuri tiga tingkat ke dalam dokumen, dan semuanya berjalan tanpa masalah.

Sekarang, mari kita lihat cara bekerja dengan array objek bersarang tersebut. Ada beberapa cara untuk melakukan kueri, tergantung apa yang ingin kita capai.

Misalkan kita ingin mengembalikan semua orang yang memiliki situs web "Portfolio" yang terdaftar. Kita bisa menjalankan kueri seperti berikut:

use dbinc;

db.people.find({
	"websites.name": "Portfolio"
});

Kueri di atas akan mengembalikan satu hasil karena hanya satu dokumen yang memiliki "Portfolio". Perhatikan bahwa meskipun kita memiliki sebuah array, notasi titik tetap berfungsi di sini. Catatannya adalah "Portfolio" harus ada setidaknya sekali di salah satu elemen array tersebut.

Di sinilah hal-hal bisa menjadi menarik.

Misalkan kita ingin membatasi lebih jauh hasil yang dikembalikan. Kita akan menambah kriteria filter, tetapi saat bekerja dengan objek bersarang di dalam array, caranya sedikit berbeda. Perhatikan contoh berikut:

use dbinc;

db.people.find({
    "websites.name": "Portfolio",
    "websites.type": "social"
});

Pada contoh di atas, kita menyatakan bahwa kita ingin hasil di mana "Portfolio" dan "social" keduanya ada dalam array, tetapi tidak harus dalam objek yang sama. Kita hanya mendapatkan satu hasil karena dokumen "Tony Kim" memiliki "social", tetapi tidak memiliki "Portfolio". Jika kita membutuhkan hasil di mana kedua field harus ada dalam objek yang sama, kita tidak bisa menggunakan notasi titik untuk itu.

Walaupun di luar cakupan tutorial ini, menggunakan operator $elemMatch seperti ini akan menyelesaikan tugasnya:

use dbinc;

db.people.find(
    { 
        "websites": { 
            "$elemMatch": { 
                "name": "Portfolio",
                "type": "social" 
            }
        }
    }
);

Tidak ada hasil yang akan dikembalikan pada skenario di atas karena data contoh kita tidak memiliki name dan type yang cocok dalam objek yang sama.

Jika Anda bekerja dengan array dan mengetahui indeks array yang ingin digunakan, Anda bisa terus menggunakan notasi titik. Sebagai contoh, perhatikan berikut ini:

use dbinc;

db.people.find({
    "websites.0.name": "Portfolio"
});

Kueri di atas menggunakan indeks array yang ingin Anda cocokkan. Pada skenario ini, kita ingin mengembalikan semua dokumen di mana item pertama dalam array memiliki name "Portfolio".

Walaupun di luar cakupan tutorial ini, penting untuk disebutkan bahwa notasi titik tidak terbatas pada kueri baca saja. Anda dapat menggunakan notasi titik seperti yang terlihat di sini dalam operasi pembaruan (update), proyeksi, dan pipeline agregasi.

Kesimpulan

Anda baru saja mendapatkan pengantar singkat menggunakan notasi titik dalam kueri MongoDB Anda. Kita mempelajari:

  • Notasi titik berfungsi untuk objek bersarang.
  • Anda dapat menggunakan notasi titik untuk array, tetapi dengan keterbatasan tergantung ekspektasi Anda terhadap array tersebut.
  • Operator $elemMatch diperlukan jika Anda ingin mencocokkan beberapa field dalam satu objek array.
  • Indeks array dalam notasi titik dapat digunakan jika Anda ingin melakukan kueri untuk elemen tertentu dalam sebuah array.

Data dalam koleksi MongoDB Anda kemungkinan tidak akan datar, artinya pada titik tertentu, Anda mungkin akan memiliki objek bersarang, array bersarang, array bersarang dalam objek, dan kombinasi kompleksitas lainnya. Kabar baiknya adalah MongoDB memudahkan Anda bekerja dengan informasi ini menggunakan API kueri yang kaya.

Jika Anda belum menggunakan MongoDB, lihat MongoDB Atlas atau tutorial saya lainnya yang menunjukkan cara memulai dengan MongoDB dan Docker. Anda juga dapat mempelajari tentang Sertifikasi MongoDB dalam panduan terpisah kami. 

FAQs

Apa itu notasi titik di MongoDB?

Notasi titik adalah cara mengakses field dokumen MongoDB yang bersarang menggunakan pembatas berupa tanda titik.

Bisakah saya memfilter dengan banyak field bersarang dalam kueri saya?

Ya, kueri pencocokan Anda dapat menggunakan notasi titik pada semua, sebagian, atau tidak pada field mana pun. Filternya sama—Anda hanya mengakses item yang bersarang.

Apa yang harus saya lakukan terkait array yang tidak dapat diprediksi?

Anda sebaiknya memastikan array Anda tidak tak berbatas demi ukuran dan kinerja, tetapi melakukan kueri terhadapnya dengan notasi titik akan tetap berfungsi dengan baik dan mudah.

Bagaimana jika saya perlu memperbarui dokumen yang memiliki objek dan array bersarang?

Saat menggunakan operasi pembaruan (update), notasi titik berfungsi baik pada bagian filter maupun bagian perubahan dalam operasi tersebut.

Topik
MongoDB

Kursus Teratas DataCamp

Kursus

Pengantar MongoDB di Python

3 jam
24.4K
Kuasai manipulasi dan analisis data berstruktur fleksibel menggunakan MongoDB.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

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

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

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

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