MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

MongoDB berbeda ()

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.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Perhitungan jarak yang salah dengan MongoDB

  2. mengimpor JSON ke mongoDB menggunakan pymongo

  3. Luwak - disebabkan oleh ::11000 E11000 indeks kesalahan kunci duplikat?

  4. Penjelasan MongoDB Upsert

  5. Mongoose - menemukan subdokumen berdasarkan kriteria