Di MongoDB, db.collection.distinct()
metode menemukan nilai yang berbeda untuk bidang tertentu di satu koleksi atau tampilan dan mengembalikan hasilnya dalam larik.
Nilai yang berbeda adalah nilai dengan duplikat yang berlebihan dihapus. Nilai yang berbeda adalah nilai yang unik. Misalnya, jika Anda memiliki 2 atau 3 dokumen dengan nilai yang sama, distinct
perintah hanya akan mengembalikan satu nilai.
db.collection.distinct()
adalah metode pembungkus shell untuk distinct
perintah.
Contoh
Misalkan kita memiliki koleksi yang disebut pets
dengan dokumen berikut.
{ "_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 }
Kita dapat menggunakan distinct()
metode untuk mengembalikan jenis hewan peliharaan yang berbeda.
db.pets.distinct( "type" )
Hasil:
[ "Bat", "Cat", "Dog" ]
Jadi meskipun ada empat anjing dan dua kucing, array hanya berisi masing-masing satu. distinct()
metode menghapus nilai duplikat.
Dokumen asli hanya memiliki satu kelelawar sehingga distinct()
metode tidak mengubah itu – tidak ada nilai duplikat untuk didedupe.
Dokumen Tersemat
Anda dapat menggunakan notasi titik untuk mendapatkan nilai yang berbeda dari bidang yang disematkan
Misalkan kita memiliki koleksi yang disebut products
yang berisi dokumen-dokumen berikut:
{ "_id" : 1, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "S", "M", "L" ] } { "_id" : 2, "product" : { "name" : "Shirt", "color" : "Green" }, "sizes" : [ "S", "M", "XL" ] } { "_id" : 3, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "S", "M", "L" ] } { "_id" : 4, "product" : { "name" : "Shorts", "color" : "Green" }, "sizes" : [ "M", "XS" ] } { "_id" : 5, "product" : { "name" : "Shorts", "color" : "Brown" }, "sizes" : [ "S", "M" ] } { "_id" : 6, "product" : { "name" : "Cap", "color" : "Purple" }, "sizes" : [ "M" ] } { "_id" : 7, "product" : { "name" : "Shoes", "color" : "Brown" }, "sizes" : [ "S", "M", "L" ] } { "_id" : 8, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "M", "L", "XL" ] } { "_id" : 9, "product" : { "name" : "Cap", "color" : "Green" }, "sizes" : [ "M", "L" ] }
Kita dapat menggunakan kueri berikut untuk mengembalikan nilai yang berbeda untuk nama produk.
db.products.distinct(
"product.name"
)
Hasil:
[ "Cap", "Shirt", "Shoes", "Shorts" ]
Kita bisa melakukan hal yang sama untuk color
lapangan.
db.products.distinct(
"product.color"
)
Hasil:
[ "Brown", "Green", "Purple", "White" ]
Dapatkan Nilai Berbeda dari Array
Berikut cara menggunakan distinct()
metode untuk mendapatkan nilai yang berbeda dari array di atas.
db.products.distinct( "sizes" )
Hasil:
[ "L", "M", "S", "XL", "XS" ]
Gunakan distinct()
dengan Kueri
Anda dapat memberikan kueri untuk menentukan dokumen yang akan digunakan untuk mengambil nilai yang berbeda. Untuk melakukannya, tambahkan kueri setelah bidang.
Contoh:
db.products.distinct( "product.name", { sizes: "S" } )
Hasil:
[ "Shirt", "Shoes", "Shorts" ]
Informasi Lebih Lanjut
db.collection.distinct()
metode ini juga menerima collation
parameter, yang memungkinkan Anda menentukan aturan khusus bahasa untuk perbandingan string, seperti aturan untuk huruf besar-kecil dan tanda aksen.
Lihat dokumentasi MongoDB untuk informasi lebih lanjut.