個別の値は、冗長な重複が削除された値です。つまり、個別の値は一意の値です。
MongoDBでは、クエリで個別の値を返す方法がいくつかあります。この記事では、mongoシェルで個別の値を返す3つの方法を紹介します。
サンプルデータ
このページの例では、 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() 方法
MongoDBでは、 db.collection.distinct() メソッドは、単一のコレクションまたはビュー全体で指定されたフィールドの個別の値を検索し、結果を配列で返します。
例:
db.pets.distinct( "type" ) 結果:
[ "Bat", "Cat", "Dog" ]
これらの3つの値は、 typeの個別の値です。 上記のドキュメントのフィールド。
ペット partは、個別の値を返すコレクションに名前を付けるだけです。
db.collection.distinct() methodは、 distinctのシェルラッパーメソッドです。 コマンド(下)。
個別コード> コマンド
MongoDBでは、 distinct 集計コマンドは、単一のコレクション全体で指定されたフィールドの個別の値を検索します。
個別の値の配列を含むドキュメントと、クエリ統計およびクエリプランを含む埋め込みドキュメントを返します。
db.runCommand ( { distinct: "pets", key: "type" } ) 結果:
{ "values" : [ "Bat", "Cat", "Dog" ], "ok" : 1 } 今回は他の情報も含むドキュメント内にあることを除いて、同じ個別の値が返されることがわかります。
$ group 集約演算子
必要に応じて、 $ groupを使用することもできます 個別の値を返す集計演算子。
例:
db.pets.aggregate( [ { $group : { _id : "$type" } } ] ) 結果:
{ "_id" : "Cat" }
{ "_id" : "Bat" }
{ "_id" : "Dog" } この場合、個別の値は個別のドキュメントで返されます。
このアプローチは、結果が大きくなることが予想される場合に役立ちます。結果が最大BSONサイズ(執筆時点で16メガバイト)よりも大きい場合は、このアプローチを使用する必要がある場合があります。