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

Perintah MongoDB yang berbeda

Di MongoDB, distinct perintah agregasi menemukan nilai yang berbeda untuk bidang tertentu di seluruh koleksi tunggal.

Ini mengembalikan dokumen yang berisi larik nilai yang berbeda, serta dokumen yang disematkan dengan statistik kueri dan rencana kueri.

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.

Ada juga db.collection.distinct() metode, yang merupakan 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 perintah untuk mengembalikan jenis hewan peliharaan yang berbeda.

distinct perintah menerima koleksi sebagai bidang pertama, dan kunci sebagai yang kedua. Kuncinya adalah bidang untuk mengembalikan nilai yang berbeda.

db.runCommand ( { distinct: "pets", key: "type" } )

Hasil:

{ "values" : [ "Bat", "Cat", "Dog" ], "ok" : 1 }

Dalam contoh ini, meskipun ada empat anjing dan dua kucing dalam koleksi, array hanya berisi masing-masing satu. distinct perintah menghapus nilai duplikat.

Dokumen asli hanya memiliki satu kelelawar sehingga distinct perintah 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.runCommand ( { distinct: "products", key: "product.name" } )

Hasil:

{ "values" : [ "Cap", "Shirt", "Shoes", "Shorts" ], "ok" : 1 }

Kita dapat melakukan hal yang sama untuk color lapangan.

db.runCommand ( { distinct: "products", key: "product.color" } )

Hasil:

{ "values" : [ "Brown", "Green", "Purple", "White" ], "ok" : 1 }

Dapatkan Nilai Berbeda dari Array

Berikut cara menggunakan distinct perintah untuk mendapatkan nilai yang berbeda dari array di atas.

db.runCommand ( { distinct: "products", key: "sizes" } )

Hasil:

{ "values" : [ "L", "M", "S", "XL", "XS" ], "ok" : 1 }

Gunakan distinct dengan Kueri

Anda dapat memberikan kueri untuk menentukan dokumen yang akan digunakan untuk mengambil nilai yang berbeda. Untuk melakukannya, tambahkan kueri setelah kunci.

Contoh:

db.runCommand ( { 
    distinct: "products", 
    key: "product.name", 
    query: { "sizes": "S" } 
    } )

Hasil:

{ "values" : [ "Shirt", "Shoes", "Shorts" ], "ok" : 1 }

Informasi Lebih Lanjut

distinct perintah juga menerima bidang lain, seperti comment , readConcern , dan collation (yang memungkinkan Anda menentukan aturan khusus bahasa untuk perbandingan string, seperti aturan untuk huruf besar 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. Mongo DB Java 3.x Driver - Kelompokkan Berdasarkan Kueri

  2. Spring data mongodb - Opsi 'kursor' diperlukan

  3. MongoDB sebagai Basis Data Deret Waktu

  4. MongoSocketReadException:Mencapai akhir aliran sebelum waktunya (setelah periode tidak aktif)

  5. Memperbarui bidang secara terprogram di Mongo dan Meteor