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!

MongoDB - Projection

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