Proyeksi di MongoDB [Dengan Contoh]
Diterbitkan: 2020-09-15MongoDB adalah salah satu database modern paling terkenal untuk menangani dan mengelola data besar. Ini adalah database berorientasi dokumen NoSQL yang menggunakan JSON seperti dokumen untuk memudahkan pengelolaan data.
Berbagai ide proyek MongoDB dapat dengan mudah diwujudkan. Namun, MongoDB juga memiliki beberapa kelemahan. Secara default, setiap kueri untuk dokumen tertentu akan menampilkan semua data - masalah ini diselesaikan dengan bantuan proyeksi MongoDB .
Daftar isi
Apa itu Proyeksi di MongoDB?
Proyeksi di MongoDB membatasi output data ke bidang tertentu alih-alih menampilkan semuanya. Ini dilakukan dengan bantuan metode find(). Metode find() menerima parameter opsional yang memungkinkan kita menyertakan atau mengecualikan bidang keluaran tertentu. Mari kita pelajari lebih dalam tentang cara menggunakan proyeksi di MongoDB .
Sintaks Metode Find()
Proyeksi di MongoDB dibuat dengan bantuan metode find(), sintaksnya adalah:
db. collection_name .find({}, { field_Key:1 atau 0 })
Dalam sintaks di atas, collection_name adalah dokumen dari mana kita perlu mengambil data. Lalu ada dua parameter dalam metode find() - yang pertama menerima kueri, dan yang kedua digunakan untuk proyeksi. Field_Key dalam sintaks adalah nama bidang yang ingin kita sertakan atau kecualikan.

Kita perlu memberikan nilai boolean untuk setiap field_ Key . Nilai ini menentukan apakah kita ingin menyertakan bidang atau mengecualikannya. Jika kita memasukkan 1 terhadap bidang, itu akan ditampilkan dalam hasil, dan jika kita memasukkan 0, itu akan disembunyikan.
Contoh database
Mari kita buat dokumen contoh dalam database sehingga kita bisa merujuknya ke seluruh artikel ini.
db.contoh.Data Siswa([
{_id: ObjectId(“59kf63795bc1d”), student_name: “Alexander”, student_id: 01, student_status: “A”, student_age: 22}
{_id: ObjectId(“59ke62794bc1d”), student_name: “Steve”, student_id: 02, student_status: “A”, student_age: 23}
{_id: ObjectId(“59kg73795bf1e”), student_name: “Luke”, student_id: 03, student_status: “A”, student_age: 21}
{_id: ObjectId(“59kb69995ah1d”), nama_siswa: “Bravo”, id_siswa: 04, status_siswa: “B”, usia_siswa: 25}
])
Ini adalah dokumen database kami bernama contoh yang akan kami gunakan sebagai referensi dalam semua contoh kami.
Mengambil data dengan dan tanpa proyeksi di MongoDB
1. Sintaks untuk mengambil tanpa proyeksi
Mengambil semua bidang (tidak menggunakan proyeksi) siswa dengan status_siswa: “A.”
db.example.find({student_status: “A”})
Ini sesuai dengan Select * from example WHERE student_status = “A” query dalam SQL. Mengambil data tanpa proyeksi di MongoDB akan menghasilkan hasil berikut:
{“_id”: ObjectId(“59kf63795bc1d”), “nama_siswa”: “Alexander”, “id_siswa”: 01, “status_siswa”: “A”, usia_siswa: 22}
{“_id”: ObjectId(“59ke62794bc1d”), “nama_siswa”: “Steve”, “id_siswa”: 02, “status_siswa”: “A”, “usia_siswa”: 23}
{“_id”: ObjectId(“59kg73795bf1e”), “student_name”: “Luke”, “student_id”: 03, “student_status”: “A”, student_age: 21}
Secara default, ini menampilkan semua bidang data di mana student_status = “A.” Untuk membatasi bidang keluaran kita dapat menggunakan proyeksi di MongoDB .
2. Sintaks untuk mengambil dengan proyeksi
Mengambil student_name dan student_status dari semua siswa.
db.example.find({}, {nama_siswa: 1, status_siswa: 1})

Ini akan menunjukkan hasil berikut:
{“_id”: ObjectId(“59kf63795bc1d”), “nama_siswa”: “Alexander”, “status_siswa”: “A”}
{“_id”: ObjectId(“59ke62794bc1d”), “nama_siswa”: “Steve”, “status_siswa”: “A”}
{“_id”: ObjectId(“59kg73795bf1e”), “nama_siswa”: “Luke”, “status_siswa”: “A”}
{“_id”: ObjectId(“59kb69995ah1d”), nama_siswa: “Bravo”, status_siswa: “B”}
_id ditampilkan secara default saat menggunakan proyeksi di MongoDB kecuali jika kita menekannya.
Menekan _id saat menggunakan proyeksi di MongoDB
Menekan _id default dan menampilkan student_id, student_name, dan student_status dari semua siswa.
db.example.find({}, {_id: 0, student_id: 1, student_name: 1, student_status: 1})
Ini akan menghasilkan hasil berikut:
{“student_id”: 01, “student_name”: “Alexander”, “student_status”: “A”}
{“student_id”: 02, “student_name”: “Steve”, “student_status”: “A”}
{“student_id”: 03, “student_name”: “Luke”, “student_status”: “A”}
{“student_id”: 04, “student_name”: “Bravo”, student_status: “B”}
3. Menggabungkan Inklusi dan Eksklusi
Tidak termasuk _id dan student_id, termasuk student_name dan student_status dari semua siswa.
db.example.find({}, {_id: 0, student_id: 0, student_name: 1, student_status: 1})
Ini akan menghasilkan hasil berikut:
Kesalahan: kesalahan: {
“menungguMS” : NumberLong(0),
“baik” : 0,
“errmsg” : “Proyeksi tidak dapat memiliki campuran inklusi dan eksklusi.”,
“kode” : 2
}
Menggabungkan penyertaan dan pengecualian saat menggunakan proyeksi MongoDB akan menimbulkan kesalahan karena kami tidak dapat melakukan keduanya dalam kueri yang sama. Bidang _id adalah pengecualian untuk aturan ini.
Anda akan memperhatikan bahwa kami telah menggunakan kombinasi penyertaan dan pengecualian dalam contoh kami sebelumnya di mana kami menekan _id dan menunjukkan beberapa bidang lain, dan itu berfungsi dengan baik. Karena pengecualian aturan, kami telah mengecualikan _id dan menyertakan bidang lainnya.
4. Menentukan Proyeksi di MongoDB dengan Pengecualian
Tidak termasuk _id dan student_status dari semua siswa dan menunjukkan bidang lainnya.
db.example.find({}, {_id: 0, student_status: 0})
{“nama_siswa”: “Alexander”, “id_siswa”: 01, “usia_siswa”: 22}
{“nama_siswa”: “Steve”, “id_siswa”: 02, “usia_siswa”: 23}
{“nama_siswa”: “Lukas”, “id_siswa”: 03, “usia_siswa”: 21}
{“nama_siswa”: “Bravo”, “id_siswa”: 04, “usia_siswa”: 25}
Anda juga dapat menggunakan empat operator proyeksi untuk membatasi bidang keluaran, tetapi tidak didukung oleh metode find(). Operator proyeksi yang dapat digunakan adalah- $, $elemMatch, $slice, dan $meta.

Baca Juga: Kasus Penggunaan MongoDB Dunia Nyata
Kesimpulan
Dengan menggunakan proyeksi di MongoDB , kita dapat mengontrol tampilan data di front end, yang meningkatkan kasus penggunaan di dunia nyata . MongoDB telah mencapai beberapa pencapaian dalam beberapa tahun terakhir. Ini telah membuat ruang lingkup MongoDB di masa depan cerah, dan banyak bisnis mencari pengembang full-stack dengan pengetahuan tentang MongoDB.
Oleh karena itu, sekarang adalah waktu yang tepat untuk memasukkan keterampilan MongoDB ke resume Anda. Tapi kemudian, hanya mengelola database tidak cukup di dunia yang kompetitif saat ini. Oleh karena itu, akan sangat membantu jika Anda ingin menjadi full-stack developer atau mempelajari analisis bisnis untuk memahami dan menganalisis data yang Anda kelola dan membantu kinerja bisnis dengan baik. upGrad dapat membantu Anda memulai.
Kami di upGrad menyediakan sumber belajar yang mendetail bersama dengan pengalaman langsung dan bantuan pekerjaan. Kami telah bekerja sama dengan beberapa lembaga untuk memberikan Anda pendidikan dan sertifikasi terbaik. Anda dapat memilih apakah Anda ingin ikut serta dalam kursus sertifikasi Analisis Bisnis atau mengikuti kursus PG Diploma pengembangan perangkat lunak full-stack . Apa pun yang ingin Anda kejar sebagai karier dalam hidup Anda, kami siap membantu Anda.
Pelajari Kursus Pengembangan Perangkat Lunak online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Lanjutan, atau Program Magister untuk mempercepat karier Anda.

