MongoDBでは、db.collection.distinct()
メソッドは、単一のコレクションまたはビュー全体で指定されたフィールドの個別の値を検索し、結果を配列で返します。
個別の値は、冗長な重複が削除された値です。個別の値は一意の値です。たとえば、同じ値のドキュメントが2つまたは3つある場合、distinct
コマンドは1つの値のみを返します。
db.collection.distinct()
distinct
のシェルラッパーメソッドです コマンド。
例
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 }
distinct()
を使用できます 個別のペットタイプを返すメソッド。
db.pets.distinct( "type" )
結果:
[ "Bat", "Cat", "Dog" ]
したがって、4匹の犬と2匹の猫がいますが、配列にはそれぞれ1匹しか含まれていません。 distinct()
メソッドは重複する値を削除しました。
元のドキュメントにはバットが1つしかないため、distinct()
メソッドはそれを変更しません–重複排除する重複値はありませんでした。
埋め込みドキュメント
ドット表記を使用して、埋め込みフィールドから個別の値を取得できます
products
というコレクションがあるとします。 次のドキュメントが含まれています:
{ "_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" ] }
次のクエリを使用して、製品名に個別の値を返すことができます。
db.products.distinct(
"product.name"
)
結果:
[ "Cap", "Shirt", "Shoes", "Shorts" ]
color
についても同じことができます フィールド。
db.products.distinct(
"product.color"
)
結果:
[ "Brown", "Green", "Purple", "White" ]
配列から個別の値を取得する
distinct()
の使用方法は次のとおりです 上記の配列から個別の値を取得するメソッド。
db.products.distinct( "sizes" )
結果:
[ "L", "M", "S", "XL", "XS" ]
distinct()
を使用する クエリを使用
個別の値を取得するドキュメントを指定するクエリを提供できます。これを行うには、フィールドの後にクエリを追加します。
例:
db.products.distinct( "product.name", { sizes: "S" } )
結果:
[ "Shirt", "Shoes", "Shorts" ]
詳細情報
db.collection.distinct()
メソッドはcollation
も受け入れます パラメータ。大文字と小文字やアクセント記号の規則など、文字列比較の言語固有の規則を指定できます。
詳細については、MongoDBのドキュメントを参照してください。