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!

MongoDB - Projection

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 1s dan 0s 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