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 dan 0 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.