フィールドの個別の値を取得
コレクション全体のフィールドの個別の値のリストを取得するには、 コレクション.distinguished() を使用します使用して複数のドキュメントを挿入できます。 ドキュメントフィールド名パラメータを持つ Collection
オブジェクトで String
として distinct()
メソッドを呼び出し、指定されたドキュメントフィールドに含まれる異なる値をそれぞれ 1 つ含むリストを生成します。
const distinctValues = myColl.distinct("countries", query);
ドット表記 を使用して 埋め込みドキュメント 内のドキュメント フィールドを指定できます。配列を含むドキュメント フィールドでdistinct()
を呼び出すと、メソッドは各要素を個別の値として扱います。 awards
サブドキュメントのwins
フィールドに対するメソッド呼び出しの次の例を参照してください。
const distinctValues = myColl.distinct("awards.wins", query);
distinct()
メソッドの 3 つ目のパラメータとして渡されるoptions
オブジェクトを使用して、さらにクエリ オプションを指定できます。 クエリ パラメーターの詳細については 、API ドキュメントの distinct() メソッド を参照してください。
ドキュメント フィールド名に 型String
Document
、Array
、Number
、 など、 型ではない値を指定すると、メソッドは実行されず、null
TypeMismatch
エラーが返されます次のようなメッセージが表示されます。
"key" のタイプが間違っていました。 期待されるstring 、見つかりました <非stringタイプ>
distinct()
メソッドの詳細については、 個別の値の取得をご覧ください。
例
次のスニペットは、 movies
コレクションからyear
ドキュメント フィールドの個別の値のリストを取得します。 クエリ ドキュメントを使用して、「バーバー スレイサンド」をdirector
として含む映画を照合します。
注意
この例を使って MongoDB のインスタンスに接続し、サンプルデータを含むデータベースとやり取りできます。MongoDB インスタンスへの接続とサンプル データセットの読み込みの詳細については、使用例ガイドを参照してください。
1 import { MongoClient } from "mongodb"; 2 3 // Replace the uri string with your MongoDB deployment's connection string. 4 const uri = "<connection string uri>"; 5 6 const client = new MongoClient(uri); 7 8 async function run() { 9 try { 10 11 // Get the database and collection on which to run the operation 12 const database = client.db("sample_mflix"); 13 const movies = database.collection("movies"); 14 15 // Specify the document field to find distinct values for 16 const fieldName = "year"; 17 18 // Specify an optional query document to narrow results 19 const query = { directors: "Barbra Streisand" }; 20 21 // Execute the distinct operation 22 const distinctValues = await movies.distinct(fieldName, query); 23 24 // Print the result 25 console.log(distinctValues); 26 } finally { 27 await client.close(); 28 } 29 } 30 run().catch(console.dir);
1 import { MongoClient } from "mongodb"; 2 3 // Replace the uri string with your MongoDB deployment's connection string. 4 const uri = "<connection string uri>"; 5 6 const client = new MongoClient(uri); 7 8 interface Movie { 9 directors: string; 10 year: number; 11 } 12 13 async function run() { 14 try { 15 // define a database and collection on which to run the method 16 const database = client.db("sample_mflix"); 17 const movies = database.collection<Movie>("movies"); 18 19 const distinctValues = await movies.distinct("year", { 20 directors: "Barbra Streisand", 21 }); 22 23 console.log(distinctValues); 24 } finally { 25 await client.close(); 26 } 27 } 28 run().catch(console.dir);
前の例を実行すると、次の出力が表示されます。
[ 1983, 1991, 1996 ]