Nilai yang berbeda adalah nilai-nilai dengan duplikat yang berlebihan dihapus. Dengan kata lain, nilai yang berbeda adalah nilai yang unik
Di MongoDB ada beberapa cara untuk mengembalikan nilai yang berbeda dalam kueri. Artikel ini menyajikan 3 cara untuk mengembalikan nilai yang berbeda di mongo shell
Contoh data
Contoh di halaman ini menggunakan koleksi berikut yang disebut pets
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }Metode distinct()
Di MongoDB, metode db.collection.distinct()_ menemukan nilai berbeda untuk bidang tertentu di seluruh koleksi atau tampilan tunggal dan mengembalikan hasilnya dalam larik
Contoh
db.pets.distinct( "type" )_Hasil
[ "Bat", "Cat", "Dog" ]Ketiga nilai ini adalah nilai yang berbeda untuk bidang db.pets.distinct( "type" )0 dalam dokumen di atas
Bagian pets hanya menamai koleksi yang akan mengembalikan nilai yang berbeda
Metode db.collection.distinct()_ adalah metode pembungkus shell untuk perintah db.pets.distinct( "type" )3 (di bawah)
Perintah db.pets.distinct( "type" )3
Di MongoDB, perintah agregasi db.pets.distinct( "type" )_3 menemukan nilai yang berbeda untuk bidang tertentu di seluruh koleksi tunggal
Ini mengembalikan dokumen yang berisi larik dari nilai yang berbeda, serta dokumen yang disematkan dengan statistik kueri dan paket kueri
Hasil
{ "values" : [ "Bat", "Cat", "Dog" ], "ok" : 1 }_Kita dapat melihat bahwa nilai berbeda yang sama dikembalikan, kecuali kali ini ada di dokumen yang juga berisi info lainnya
db.pets.distinct( "type" )6 Operator Agregasi
Bergantung pada kebutuhan Anda, Anda juga dapat menggunakan operator agregasi db.pets.distinct( "type" )6 untuk mengembalikan nilai yang berbeda
Contoh
db.pets.aggregate( [ { $group : { _id : "$type" } } ] )Hasil
{ "_id" : "Cat" } { "_id" : "Bat" } { "_id" : "Dog" }Dalam hal ini nilai yang berbeda dikembalikan dalam dokumen terpisah
Pendekatan ini bisa berguna jika Anda mengharapkan hasil yang besar. Jika hasil Anda lebih besar dari ukuran BSON maksimum (16 megabita pada saat penulisan), Anda mungkin perlu menggunakan pendekatan ini
Di MongoDB, metode yang berbeda () menemukan nilai yang berbeda untuk bidang yang diberikan di satu koleksi dan mengembalikan hasilnya dalam sebuah array. Dibutuhkan tiga parameter, yang pertama adalah bidang untuk mengembalikan nilai yang berbeda dan yang lainnya opsional
Pada artikel ini, kami akan menangani cara mengembalikan nilai unik menggunakan metode MongoDB distinct(). Selain itu, mengembalikan nilai unik dalam larik dan bidang juga dibahas
Di MongoDB, Anda mungkin ingin merender atau mengembalikan nilai unik sesekali, dan Anda dapat melakukannya dengan menggunakan metode distinct()
Metode distinct()_ menghasilkan array nilai yang berbeda untuk bidang yang diberikan di semua koleksi atau tampilan dalam satu koleksi atau tampilan dan membantu Anda mengembalikan nilai unik untuk bidang yang ditentukan dalam shell mongo
Fungsi distinct()_ di MongoDB
Sintaksis
db.collection.distinct(field, query, options)
Di MongoDB, fungsi harus memiliki dua parameter yang diperlukan yang disebut operator bidang dan kueri. Parameter bidang adalah bidang tempat Anda ingin metode distinct() untuk mendapatkan nilai unik
Parameter kueri menentukan dokumen dari mana nilai yang berbeda harus diambil. Anda dapat mengirimkan fungsi parameter opsi agunan
Perhatikan bahwa jika nilai bidang yang ditentukan adalah larik, distinct() memperlakukan setiap elemen larik sebagai nilai terpisah. Misalnya, jika bidang memiliki nilai db.movies.find().pretty() { "_id" : ObjectId("60322d3501cd70079c48cb65"), "title" : "Enchanted", "year" : 2006, "score" : 10, "rating" : "PG", "__v" : 0 } { "_id" : ObjectId("60322d3501cd70079c48cb67"), "title" : "Final Destination II", "year" : 2015, "score" : 10, "rating" : "PG-13", "__v" : 0 } { "_id" : ObjectId("6190189ef5c8903629012fe1"), "title" : "Fifty Shades of Grey", "year" : 2015, "score" : 10, "rating" : "NC-17", "__v" : 0 } _2, distinct() memperlakukan db.movies.find().pretty() { "_id" : ObjectId("60322d3501cd70079c48cb65"), "title" : "Enchanted", "year" : 2006, "score" : 10, "rating" : "PG", "__v" : 0 } { "_id" : ObjectId("60322d3501cd70079c48cb67"), "title" : "Final Destination II", "year" : 2015, "score" : 10, "rating" : "PG-13", "__v" : 0 } { "_id" : ObjectId("6190189ef5c8903629012fe1"), "title" : "Fifty Shades of Grey", "year" : 2015, "score" : 10, "rating" : "NC-17", "__v" : 0 } 4, db.movies.find().pretty() { "_id" : ObjectId("60322d3501cd70079c48cb65"), "title" : "Enchanted", "year" : 2006, "score" : 10, "rating" : "PG", "__v" : 0 } { "_id" : ObjectId("60322d3501cd70079c48cb67"), "title" : "Final Destination II", "year" : 2015, "score" : 10, "rating" : "PG-13", "__v" : 0 } { "_id" : ObjectId("6190189ef5c8903629012fe1"), "title" : "Fifty Shades of Grey", "year" : 2015, "score" : 10, "rating" : "NC-17", "__v" : 0 } 5, dan db.movies.find().pretty() { "_id" : ObjectId("60322d3501cd70079c48cb65"), "title" : "Enchanted", "year" : 2006, "score" : 10, "rating" : "PG", "__v" : 0 } { "_id" : ObjectId("60322d3501cd70079c48cb67"), "title" : "Final Destination II", "year" : 2015, "score" : 10, "rating" : "PG-13", "__v" : 0 } { "_id" : ObjectId("6190189ef5c8903629012fe1"), "title" : "Fifty Shades of Grey", "year" : 2015, "score" : 10, "rating" : "NC-17", "__v" : 0 } 4 sebagai nilai terpisah
Gunakan Fungsi distinct() untuk Mengembalikan Nilai Unik
Mari gunakan fungsi distinct() untuk mengembalikan nilai unik di MongoDB. Koleksi di bawah ini akan digunakan untuk contoh pertama
db.movies.find().pretty() { "_id" : ObjectId("60322d3501cd70079c48cb65"), "title" : "Enchanted", "year" : 2006, "score" : 10, "rating" : "PG", "__v" : 0 } { "_id" : ObjectId("60322d3501cd70079c48cb67"), "title" : "Final Destination II", "year" : 2015, "score" : 10, "rating" : "PG-13", "__v" : 0 } { "_id" : ObjectId("6190189ef5c8903629012fe1"), "title" : "Fifty Shades of Grey", "year" : 2015, "score" : 10, "rating" : "NC-17", "__v" : 0 }
Mengembalikan Nilai Unik atau Berbeda untuk Bidang di MongoDB
Koleksi film di atas mengembalikan nilai unik untuk bidang yang ditentukan dalam contoh ini. Katakanlah Anda menginginkan nilai unik dari bidang peringkat
Pertanyaan
db.movies.distinct( "rating" ) [ null, "", "NC-17", "PG", "PG-13"]
Setelah menggunakan kueri di atas, fungsi distinct()_ telah berhasil membantu Anda mengembalikan nilai unik di MongoDB untuk koleksi
Kembalikan Nilai Unik untuk Bidang Tersemat di MongoDB
Dalam contoh ini, menampilkan nilai unik untuk bidang yang disematkan. Namun, koleksi yang digunakan di contoh sebelumnya tidak berisi bidang yang disematkan
Oleh karena itu, koleksi baru akan digunakan, seperti yang ditunjukkan di bawah ini
db.drones.find().pretty() { "_id" : ObjectId("61673f46b34f185eb7b2bf0c"), "utility" : [ "Natural Resource Exploration", "Remote sensing", "Real estate and construction", "Recreation", "Delivery" ], "onSale" : false, "name" : "Nimbari Gryphon Medeta 65", "price" : 77500, "weight" : "77 kilograms", "additionalDetails" : { "material" : "carbon fiber", "moreUses" : [ "Precision Agriculture", "Land Inspection", "Water Inspection", "Cinematography" ] } } { "_id" : ObjectId("61673f46b34f185eb7b2bf0d"), "utility" : [ "Natural Resource Exploration", "Remote sensing", "Real estate and construction", "Recreation", "Delivery" ], "onSale" : false, "name" : "X-Strimmer Eye", "price" : 23500, "weight" : "24 kilograms", "additionalDetails" : { "material" : "glass fiber", "moreUses" : [ "Precision Agriculture", "Cinematography" ] } } { "_id" : ObjectId("61673f46b34f185eb7b2bf0e"), "utility" : [ "Natural Resource Exploration", "Remote sensing", "Real estate and construction", "Recreation", "Delivery" ], "onSale" : false, "name" : "Khai Balemosh Shefqa TRX", "price" : 120500, "weight" : "80 kilograms", "additionalDetails" : { "material" : "aluminum", "moreUses" : [ "Precision Agriculture", "Land Inspection" ] } }
Kueri berikut dapat mengembalikan nilai unik dari semua bidang yang disematkan dari kumpulan database di atas
Pertanyaan
db.drones.distinct( "additionalDetails.material" ) [ "aluminum", "carbon fiber", "glass fiber"]
Mengembalikan Nilai Unik untuk Bidang Larik Tertanam
Menggunakan fungsi distinct(), Anda dapat menggunakan koleksi yang sama di atas untuk mengembalikan nilai unik dari bidang larik tersemat menggunakan fungsi distinct()
Pertanyaan
db.drones.distinct( "additionalDetails.moreUses" ) ["Cinematography","Land Inspection"]
Dalam artikel tutorial MongoDB ini, Anda diberikan tampilan mendetail tentang fungsi berbeda dengan koleksi. Mengembalikan nilai unik dalam larik dan bidang atau bidang tersemat juga dijelaskan dengan segmen kode