Di MongoDB, kami menggunakan metode find() untuk mengambil data. Namun, find() mengambil semua bidang dalam dokumen tanpa pemfilteran apa pun Show Proyeksi MongoDB memecahkan masalah ini dengan mengaktifkan fungsi find() untuk digunakan dengan argumen pemfilteran data, yang memungkinkan pengguna mengekstrak hanya bidang data yang diperlukan dari dokumen Dalam artikel praktis ini, kami akan menunjukkannya kepada Anda (Artikel ini adalah bagian dari Panduan MongoDB kami. Gunakan menu sebelah kanan untuk menavigasi. ) Cara kerja proyeksi MongoDBProyeksi MongoDB adalah alat yang ampuh yang dapat digunakan untuk mengekstrak hanya bidang yang Anda perlukan dari dokumen—tidak semua bidang. Ini memungkinkan Anda untuk
Karena proyeksi MongoDB dibangun di atas metode find() yang ada, Anda dapat menggunakan kueri proyeksi apa pun tanpa modifikasi signifikan pada fungsi yang ada. Selain itu, proyeksi adalah faktor kunci saat menemukan data khusus pengguna dari kumpulan data tertentu Sintaks Dasar Proyeksi MongoDBdb.collection_name.find({},{<field> : <value>}) Proyeksi MongoDB menggunakan sintaks find yang sama, tetapi kami juga menambahkan sekumpulan parameter ke fungsi find. Kumpulan parameter ini menginformasikan instance MongoDB tentang bidang mana yang akan dikembalikan Pertimbangkan koleksi berikut yang disebut "informasi kendaraan" Kami akan mencoba mengambil tahun model kendaraan buatan Toyota (make. 'Toyota') Pernyataan find() normal db.vehicleinformation.find({make : "Toyota"}).pretty()_ Hasil Dalam pernyataan ini, kami menerima semua data dalam dokumen di mana make adalah Toyota. Untuk mendapatkan tahun saja, kita bisa menggunakan proyeksi, seperti yang ditunjukkan di bawah ini Pernyataan proyeksi MongoDB db.vehicleinformation.find({make : "Toyota"}, {year : 1}).pretty() Hasil Dalam pernyataan proyeksi, kami menggunakan bidang tahun dengan nilai Boolean 1 (Benar) untuk menunjukkan bahwa kami hanya memerlukan bidang "tahun". Keterbatasannya adalah bahwa MongoDB akan mengembalikan ID objek (_id) dari setiap dokumen kecuali kami secara eksplisit menentukan bahwa kami tidak memerlukan ID objek Pernyataan proyeksi MongoDB dengan “_id” dikecualikan db.vehicleinformation.find({make : "Toyota"}, {year : 1, _id : 0}).pretty() Hasil Dalam pernyataan ini, kami memberikan 0 sebagai operator Boolean untuk menunjukkan bahwa kami tidak memerlukan bidang ID objek Operator dalam Proyeksi MongoDBMenggunakan metode proyeksi MongoDB untuk mengambil data tertentu dari dokumen akan berdampak positif pada kinerja database karena mengurangi beban kerja kueri pencarian, meminimalkan penggunaan sumber daya Untuk mengurangi beban kerja, MongoDB menawarkan operator di bawah ini yang dapat digunakan dalam kueri proyeksi
$OperatorOperator $ digunakan untuk membatasi isi array untuk memproyeksikan elemen pertama yang cocok dengan kondisi kueri pada bidang array. Mulai dari MongoDB 4. 4, jika tidak ada kondisi kueri, elemen pertama akan dikembalikan dalam larik yang ditentukan Sintaksis db.collection.find( { <array>: <condition> .. }, { "<array>.$": 1 } )_ Keterbatasan operator $
Kami akan menggunakan Koleksi "studentgrades" untuk mendemonstrasikan operator $ db.studentgrades.find({},{_id:0}).pretty() Hasil Menggunakan koleksi “studentgrades”, kami mencari apakah seorang siswa telah menerima nilai sama dengan atau lebih besar dari 80 Mari kita lihat apa yang terjadi jika kita tidak menggunakan operator $. Kode di bawah ini akan menghasilkan kueri yang mengembalikan semua nilai dalam larik sebagai keluaran jika ada item yang sama atau lebih besar dari 80 db.studentgrades.find( {grades: { $gte: 80}}, {"grades": 1})_ Hasil Menggunakan operator $ hanya akan mengembalikan item pertama yang sama atau lebih besar dari 80 db.studentgrades.find( {grades: { $gte: 80}}, {"grades.$": 1}) Hasil Operator $elemMatchOperator $elemMatch akan membatasi isi array ke elemen pertama yang cocok dengan kondisi tertentu. Kondisi ini berbeda dengan operator $ karena operator proyeksi $elemMatch memerlukan argumen kondisi yang eksplisit Mari kita lihat sintaks penggunaan $elemMatch dalam metode find() Sintaksis db.collection.find( { <array>: <condition> .. }, { "<array>.$elemMatch": ($elemMatch operator) } )_ Keterbatasan operator $elemMatch
Kami akan menggunakan koleksi "schooldata" berikut untuk mendemonstrasikan operator $elemMatch db.schooldata.find()_ Hasil Sekarang kami akan menjalankan ini di satu bidang. Dengan operator $elemMatch, kita akan mencari sekolah di London dengan siswa yang berumur sepuluh tahun. Metode pretty() digunakan untuk memformat output db.vehicleinformation.find({make : "Toyota"}).pretty()_0 Hasil Dalam contoh di bawah ini, kami akan memeriksa beberapa bidang. Di sini, kami memeriksa usia dan nama siswa. Kami memeriksa apakah seorang siswa bernama "barry" yang berusia sepuluh tahun bersekolah di sekolah mana pun di London db.vehicleinformation.find({make : "Toyota"}).pretty()_1 Hasil Operator Proyeksi $sliceOperator $slice menentukan jumlah elemen yang harus dikembalikan sebagai keluaran kueri Sintaksis db.vehicleinformation.find({make : "Toyota"}).pretty()_2 Keterbatasan dalam operator $slice
Sekarang kita akan menggunakan koleksi "schooldata" untuk mendemonstrasikan operator $slice db.schooldata.find()_ Hasil Mari kita mengiris elemen pertama dalam sebuah array. Untuk mencapai hasil ini, kami menggunakan operator $slice untuk mengiris hanya elemen pertama dari larik siswa db.vehicleinformation.find({make : "Toyota"}).pretty()_4 Hasil Sekarang, kita akan mengiris elemen terakhir dalam array. Gunakan operator $slice dengan “-1” untuk menunjukkan record terakhir db.vehicleinformation.find({make : "Toyota"}).pretty()_5 Hasil Untuk melewatkan elemen, kita harus menentukan elemen yang akan dilewati dan jumlah elemen yang akan dikembalikan. Contoh berikut menunjukkan skenario ini Lewati elemen pertama dan kembalikan dua elemen berikutnya db.vehicleinformation.find({make : "Toyota"}).pretty()_6 Hasil Dalam pernyataan ini, kami mengiris array "siswa" dengan melewatkan elemen pertama dan mengembalikan dua elemen yang tersisa. Ini didefinisikan di dalam tanda kurung siku []. Nilai pertama adalah elemen yang akan diabaikan, sedangkan nilai kedua adalah berapa sisa elemen yang akan dikembalikan. Jika array memiliki kurang dari dua elemen setelah melewatkan elemen pertama, ia akan mengembalikan semua elemen yang tersisa Operator $metaOperator $meta digunakan untuk mendapatkan metadata yang terkait dengan dokumen. Operator $meta dapat digunakan dengan MongoDB Aggregation dan proyeksi MongoDB. Bagian ini hanya akan membahas dasar-dasar proyeksi MongoDB dan bagaimana operator $meta akan digunakan dalam proyeksi Operator $meta menggunakan sintaks berikut db.vehicleinformation.find({make : "Toyota"}).pretty()_7 Untuk “metaDataKeyword”, Anda dapat mengaitkan nilai-nilai ini
Penggunaan dan Keterbatasan operator $meta dalam proyeksi
Sekarang, mari kita lihat beberapa contoh Untuk {$meta. “textScore”}, kita akan menggunakan koleksi makanan db.vehicleinformation.find({make : "Toyota"}).pretty()_8 Hasil Mari buat indeks untuk koleksi "makanan". Kami akan menggunakan bidang "food_desc" untuk membuat indeks teks db.vehicleinformation.find({make : "Toyota"}).pretty()_9 Hasil Sekarang mari kita cari skor teks. Kami menggunakan kata "pizza" sebagai istilah pencarian dan menggunakan operator $meta untuk mendapatkan skor teks untuk setiap dokumen. Identitas. 0) digunakan untuk menghilangkan id objek dari setiap dokumen untuk hasil yang lebih mudah db.vehicleinformation.find({make : "Toyota"}, {year : 1}).pretty()0 Hasil Sekarang ke {$meta. “Key indeks”}. Karena "indexKey" hanya untuk keperluan debugging, dokumentasi resmi MongoDB menyatakan sebagai berikut db.vehicleinformation.find({make : "Toyota"}, {year : 1}).pretty()1 Contoh berikut dibuat menggunakan koleksi “vehiclesales”. Menggunakan {_id. 0}, id objek dihilangkan dari output db.vehicleinformation.find({make : "Toyota"}, {year : 1}).pretty()2 Hasil Di sini, kami membuat indeks majemuk menggunakan bidang "make" dan "type" db.vehicleinformation.find({make : "Toyota"}, {year : 1}).pretty()_3 Hasil Selanjutnya mari kita lakukan Proyeksi dengan indeks. Kami mencari dokumen di koleksi "penjualan kendaraan" yang jenisnya sama dengan "Olahraga" dan menggunakan operator $meta untuk mendapatkan kunci indeks untuk setiap dokumen db.vehicleinformation.find({make : "Toyota"}, {year : 1}).pretty()_4 Hasil Bagaimana dengan proyeksi tanpa indeks? . Dalam hal ini, indeks tidak akan dikembalikan karena bidang harga bukan merupakan bagian dari indeks Apa itu kueri dan proyeksi di MongoDB?Apa itu kueri proyeksi? . Kueri proyeksi digunakan untuk menentukan atau membatasi data yang dikembalikan dalam hasil kueri . Dengan menentukan kueri proyeksi, Anda dapat menentukan bidang yang ingin Anda kembalikan atau kecualikan.
Apa itu operator proyeksi di MongoDB?Dalam MongoDB, operator posisi $ digunakan untuk membatasi hanya elemen pencocokan pertama dari bidang array , dan itu terjadi meskipun ada . Itu harus mengharuskan untuk menampilkan bidang
Apa operator kueri logis di MongoDB?Operator Logika - $and
. Operator $and menggunakan evaluasi hubung singkat
Apa itu operator kueri?Operator adalah kata khusus atau karakter yang digunakan untuk mengkueri database kita dalam ekspresi SQL . Untuk menanyakan database menggunakan operator, kami menggunakan klausa WHERE. Operator diperlukan untuk menentukan kondisi dalam SQL, karena mereka bertindak sebagai penghubung antara dua atau lebih kondisi. |