MongoDB - Proyeksi
Hai there, para pemrogramwan masa depan! Hari ini, kita akan melihat dunia yang menarik proyeksi MongoDB. Jangan khawatir jika Anda baru dalam pemrograman - saya akan mengarahkan Anda melalui konsep ini secara langkah demi langkah, seperti yang saya lakukan untuk ribuan murid selama tahun-tahun mengajar saya. Jadi, ambil secangkir minuman favorit Anda, dan mari kita embarkasi dalam perjalanan yang menarik ini bersama!
Apa Itu Proyeksi di MongoDB?
Sebelum kita masuk ke dalam hal-hal kecil, mari kita pahami apa arti proyeksi dalam konteks MongoDB. Bayangkan Anda memiliki perpustakaan besar (database Anda) dengan ribuan buku (dokumen Anda). Sekarang, apa bila Anda hanya ingin tahu judul buku-buku ini tanpa membawa keseluruhan buku? Itu sebenarnya apa yang dilakukan proyeksi di MongoDB - itu memungkinkan Anda untuk mengambil hanya bidang spesifik yang Anda butuhkan dari dokumen Anda.
Metode find()
Pusat dari pengqueryan MongoDB adalah metode find()
. Powerhouse kecil ini adalah apa yang kita gunakan untuk mengambil dokumen dari koleksi. Tetapi saat digabungkan dengan proyeksi, itu menjadi lebih kuat. Mari kita lihat!
Sintaks Dasar
Sintaks dasar metode find()
dengan proyeksi terlihat seperti ini:
db.collection.find(query, projection)
Di sini, query
menentukan dokumen mana yang akan dikembalikan, dan projection
menentukan bidang mana yang akan dikembalikan dari dokumen itu.
Termasuk Bidang
Mari kita mulai dengan contoh sederhana. Misalnya kita memiliki koleksi siswa, dan kita hanya ingin mengambil nama dan umur mereka. Berikut adalah cara kita melakukannya:
db.students.find({}, { name: 1, age: 1 })
Dalam contoh ini:
-
{}
pertama adalah query kosong, berarti kita ingin semua dokumen. -
{ name: 1, age: 1 }
adalah proyeksi kita.1
berarti kita ingin termasuk bidang ini.
Query ini akan mengembalikan sesuatu seperti ini:
[
{ "_id": ObjectId("..."), "name": "Alice", "age": 20 },
{ "_id": ObjectId("..."), "name": "Bob", "age": 22 },
...
]
Perhatikan bahwa bidang _id
selalu dimasukkan secara default. Itu seperti teman yang selalu datang tanpa undangan ke pesta!
Menghapus Bidang
Sekarang, apa bila kita ingin menghapus bidang tertentu? Kita juga bisa melakukannya! Misalnya kita ingin semua bidang kecuali identitas superhero siswa:
db.students.find({}, { superhero_identity: 0 })
Di sini, 0
berarti kita ingin menghapus bidang ini. Query ini akan mengembalikan semua bidang untuk setiap dokumen kecuali superhero_identity
.
Menggabungkan Termasuk dan Menghapus
Ini adalah fakta menarik: Anda tidak bisa menggabungkan 1
s dan 0
s dalam proyeksi Anda, kecuali untuk bidang _id
. Itu seperti mencoba menggabungkan minyak dan air - itu hanya tidak bekerja! MongoDB ingin Anda jelas tentang apakah Anda mentermasukkan atau menghapus bidang.
Menghapus _id
Ingat teman yang tidak diundang _id
? Kadang-kadang kita mungkin ingin memberikan mereka pintu keluar. Berikut adalah cara:
db.students.find({}, { name: 1, age: 1, _id: 0 })
Ini akan memberikan kita hanya nama dan umur, tanpa _id
:
[
{ "name": "Alice", "age": 20 },
{ "name": "Bob", "age": 22 },
...
]
Teknik Proyeksi Tingkat Lanjut
Sekarang kita telah mengetahui dasar-dasar, mari kita lihat beberapa teknik yang lebih lanjut. Ini adalah seperti mantra rahasia dalam buku mantra penyihir MongoDB Anda!
Proyeksi pada Dokumen Embedded
Bayangkan setiap dokumen siswa memiliki dokumen embedded untuk alamat mereka. Kita bisa proyeksi pada bidang spesifik dalam dokumen embedded ini:
db.students.find({}, { "name": 1, "address.city": 1 })
Ini akan mengembalikan nama siswa dan hanya kota dari alamat mereka:
[
{ "_id": ObjectId("..."), "name": "Alice", "address": { "city": "Wonderland" } },
{ "_id": ObjectId("..."), "name": "Bob", "address": { "city": "Builderville" } },
...
]
Proyeksi pada Elemen Array
Apa bila kita memiliki array skor untuk setiap siswa dan kita hanya ingin yang pertama dan kedua? Kita bisa menggunakan operator $slice
:
db.students.find({}, { name: 1, scores: { $slice: 2 } })
Ini akan mengembalikan nama siswa dan hanya dua skor pertama:
[
{ "_id": ObjectId("..."), "name": "Alice", "scores": [95, 88] },
{ "_id": ObjectId("..."), "name": "Bob", "scores": [92, 78] },
...
]
Tabel Metode Proyeksi
Berikut adalah tabel praktis yang menggabungkan metode proyeksi yang kita pelajari:
Metode | Deskripsi | Contoh |
---|---|---|
Termasuk Bidang | Gunakan 1 untuk termasuk bidang spesifik |
{ name: 1, age: 1 } |
Hapus Bidang | Gunakan 0 untuk menghapus bidang spesifik |
{ superhero_identity: 0 } |
Hapus _id | Set _id ke 0 untuk menghapusnya |
{ name: 1, _id: 0 } |
Proyeksi Bidang Embedded | Gunakan notasi titik | { "address.city": 1 } |
Proyeksi Elemen Array | Gunakan operator $slice
|
{ scores: { $slice: 2 } } |
Kesimpulan
Dan itu adalah, teman-teman saya! Kita telah berpergian melalui tanah proyeksi MongoDB, dari dasar termasuk dan menghapus bidang ke teknik yang lebih lanjut bekerja dengan dokumen embedded dan array. Ingat, proyeksi adalah seperti menjadi pengguna yang selektif di pasar database - Anda hanya mengambil apa yang Anda butuhkan, menyimpan waktu dan sumber daya.
Saat Anda terus melatih teknik ini, Anda akan menemukan bahwa proyeksi adalah alat yang sangat kuat dalam kotak alat MongoDB Anda. Itu memungkinkan Anda untuk bentuk pengambilan data Anda tepat sesuai kebutuhan aplikasi Anda, membuat operasi database Anda lebih efisien dan kode Anda lebih bersih.
Tetap mencoba, tetap belajar, dan terutama, bersenang-senang dengannya! Setelah semuanya, kegembiraan penemuan adalah apa yang membuat pemrograman menjadi bidang yang menarik. Sampaijumpa lagi, selamat coding!
Credits: Image by storyset