MongoDB - Proyeksi
Hai teman-teman, para ahli basisdata masa depan! Hari ini, kita akan melihat dunia yang menarik proyeksi MongoDB. Jangan khawatir jika Anda masih baru dalam programming – saya akan mengarahkan Anda secara langkah demi langkah dalam konsep ini, sama seperti yang saya lakukan bagi ribuan murid selama tahun-tahun mengajar saya. Jadi, ambil secangkir minuman kesukaan Anda, dan mari kita mulai perjalanan yang menarik ini bersama!
Apa Itu Proyeksi dalam MongoDB?
Sebelum kita masuk ke hal yang mendalam, mari kita pahami apa arti proyeksi dalam konteks MongoDB. Bayangkan Anda memiliki sebuah pustaka besar (basisdat Anda) dengan ribuan buku (dokumen Anda). Sekarang, apa bila Anda hanya ingin mengetahui judul buku-buku ini tanpa membawa seluruh buku itu saja? Itu sebenarnya apa yang dilakukan proyeksi dalam MongoDB – itu memungkinkan Anda untuk mengambil hanya bidang khusus yang Anda butuhkan dari dokumen Anda.
Metode find()
Pada inti dari pengqueryan MongoDB adalah metode find()
. Metode kecil ini adalah apa yang kita gunakan untuk mengambil dokumen dari sebuah koleksi. Tetapi saat digabungkan dengan proyeksi, itu menjadi lebih kuat. Mari kita lihat bagaimana!
Sintaks Dasar
Sintaks dasar metode find()
dengan proyeksi tampak 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 mulai dengan contoh sederhana. Anggaplah kita memiliki sebuah koleksi murid, dan kita hanya ingin mengambil nama dan umur mereka. Ini 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. Angka1
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 itu yang selalu muncul tanpa undangan ke pesta-pesta!
Menghapus Bidang
Sekarang, apa bila kita ingin menghapus bidang tertentu? Kita juga bisa melakukannya! Katakanlah kita ingin semua bidang kecuali identitas superhero murid:
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
.
Campur Include dan Exclude
Ini adalah fakta menarik: Anda tidak bisa mencampur 1
s dan 0
s dalam proyeksi Anda, kecuali untuk bidang _id
. Itu seperti mencampur minyak dan air – itu hanya tidak bekerja! MongoDB ingin Anda jelas tentang apakah Anda menambahkan atau menghapus bidang.
Menghapus _id
Ingat teman yang tidak diundang _id
? Kadang-kadang kita mungkin ingin mengusir mereka. Ini 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 Lanjut
Sekarang kita telah menutup dasar-dasar, mari kita lihat beberapa teknik lanjut. Ini seperti mantra rahasia dalam buku mantra ahli MongoDB kita!
Proyeksi pada Dokumen Tersembed
Bayangkan setiap dokumen murid memiliki dokumen tersembed untuk alamat mereka. Kita bisa proyeksi pada bidang khusus dalam dokumen tersembed ini:
db.students.find({}, { "name": 1, "address.city": 1 })
Ini akan mengembalikan nama murid 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 murid 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 murid dan hanya dua skor pertama:
[
{ "_id": ObjectId("..."), "name": "Alice", "scores": [95, 88] },
{ "_id": ObjectId("..."), "name": "Bob", "scores": [92, 78] },
...
]
Tabel Metode Proyeksi
Ini adalah tabel praktis yang menggabungkan metode proyeksi yang kita pelajari:
Metode | Deskripsi | Contoh |
---|---|---|
Include Fields | Gunakan 1 untuk termasuk bidang khusus |
{ name: 1, age: 1 } |
Exclude Fields | Gunakan 0 untuk menghapus bidang khusus |
{ superhero_identity: 0 } |
Exclude _id | Set _id ke 0 untuk menghapusnya |
{ name: 1, _id: 0 } |
Project Embedded Fields | Gunakan notasi titik | { "address.city": 1 } |
Project Array Elements | Gunakan operator $slice
|
{ scores: { $slice: 2 } } |
Kesimpulan
Dan begitulah, teman-teman saya! Kita telah melintasi negeri proyeksi MongoDB, dari dasar termasuk dan menghapus bidang ke teknik lanjut bekerja dengan dokumen tersembed dan array. Ingat, proyeksi adalah seperti menjadi pembeli selektif di pasar basisdata – Anda hanya mengambil apa yang Anda butuhkan, menyimpan waktu dan sumber daya.
Saat Anda mempraktikkan teknik ini, Anda akan menemukan bahwa proyeksi adalah alat yang sangat kuat dalam peralatan MongoDB Anda. Itu memungkinkan Anda untuk mem Bentuk pengambilan data Anda tepat apa yang Anda butuhkan, membuat operasi basisdata Anda lebih efisien dan kode Anda lebih bersih.
Terus mencoba, terus belajar, dan terutama, bersenang-senang dengannya! Setelah semuanya, kegembiraan penemuan adalah apa yang membuat programming menjadi bidang yang menarik. Sampaijumpa lagi, coding yang gembira!
Credits: Image by storyset