Projection pada MongoDB
Projection pada MongoDB adalah fitur yang memungkinkan pengguna untuk memilih field tertentu yang akan ditampilkan atau disembunyikan dalam hasil query. Fitur ini sangat berguna untuk mengurangi jumlah data yang dikembalikan oleh query, sehingga dapat meningkatkan efisiensi aplikasi. Artikel ini akan menjelaskan cara menggunakan projection, disertai dengan contoh kasus yang relevan.
Apa Itu Projection?
Projection digunakan dalam MongoDB untuk menentukan field mana saja yang perlu disertakan atau dikecualikan dari hasil query. Dengan kata lain, projection membantu untuk mendapatkan data yang lebih spesifik, sesuai kebutuhan, tanpa mengambil seluruh isi dokumen.
Sintaks Dasar Projection
Projection diterapkan sebagai parameter kedua dalam metode find()
. Sintaksnya:
db.collection.find(query, projection)
query
: Filter untuk dokumen yang ingin diambil.projection
: Objek untuk menentukan field mana yang akan disertakan atau disembunyikan.
Nilai dalam projection:
1
: Menyertakan field.0
: Mengecualikan field.
Catatan: Tidak dapat mencampur penggunaan
1
dan0
dalam satu projection kecuali untuk field_id
.
Contoh Kasus 1: Menyertakan Field Tertentu
Misalkan ada koleksi products
dengan dokumen berikut:
{ "_id": 1, "name": "Laptop", "price": 1200, "stock": 50 }
{ "_id": 2, "name": "Mouse", "price": 20, "stock": 200 }
{ "_id": 3, "name": "Keyboard", "price": 50, "stock": 150 }
Untuk menampilkan hanya field name
dan price
, gunakan query berikut:
javascriptCopy codedb.products.find({}, {name: 1, price: 1, _id: 0})
Hasilnya:
{ "name": "Laptop", "price": 1200 }
{ "name": "Mouse", "price": 20 }
{ "name": "Keyboard", "price": 50 }
Contoh Kasus 2: Mengecualikan Field Tertentu
Jika ingin menampilkan semua field kecuali stock
, query dapat ditulis seperti ini:
db.products.find({}, {stock: 0})
Hasilnya:
jsonCopy code{ "_id": 1, "name": "Laptop", "price": 1200 }
{ "_id": 2, "name": "Mouse", "price": 20 }
{ "_id": 3, "name": "Keyboard", "price": 50 }
Contoh Kasus 3: Kombinasi Query dan Projection
Projection sering digunakan bersama filter pada query. Misalkan, ingin menampilkan hanya name
dan price
dari produk dengan harga di atas 30:
db.products.find({price: {$gt: 30}}, {name: 1, price: 1, _id: 0})
Hasilnya:
jsonCopy code{ "name": "Laptop", "price": 1200 }
{ "name": "Keyboard", "price": 50 }
Contoh Kasus 4: Projection pada Array
MongoDB juga mendukung projection pada field yang berupa array. Misalnya, koleksi orders
berisi dokumen berikut:
{ "_id": 1, "customer": "John", "items": ["Laptop", "Mouse"] }
{ "_id": 2, "customer": "Jane", "items": ["Keyboard", "Mouse", "Monitor"] }
Untuk hanya menampilkan customer
dan elemen pertama dari array items
:
javascriptCopy codedb.orders.find({}, {customer: 1, "items.0": 1, _id: 0})
Hasilnya:
{ "customer": "John", "items": ["Laptop"] }
{ "customer": "Jane", "items": ["Keyboard"] }
Kesimpulan
Projection adalah fitur penting dalam MongoDB yang memungkinkan pengguna untuk mengontrol data yang dikembalikan dari query. Dengan menyertakan atau mengecualikan field tertentu, pengguna dapat mengoptimalkan efisiensi query sekaligus mengurangi overhead data. Artikel ini telah memberikan panduan dasar dan beberapa contoh kasus penggunaan projection, termasuk untuk field sederhana dan array.