Retrieve Data
Overview
このガイドでは、 Kotlin Sync ドライバーを使用して、読み取り操作により MongoDB コレクションからデータを検索する方法を学習できます。 find()
メソッドを呼び出して、クエリフィルターで指定された一連の条件に一致するドキュメントを検索できます。
サンプル データ
このガイドの例では、 Atlas サンプル データセットのsample_restaurants
データベースのrestaurants
コレクションを使用します。 MongoDB Atlas クラスターを無料で作成して、サンプル データセットをロードする方法については、 「 Atlas を使い始める 」ガイドを参照してください。
このコレクション内のドキュメントは、次の Kotlin データ クラスによってモデル化されます。
data class Restaurant( val name: String, val cuisine: String )
ドキュメントの検索
find()
メソッドは、コレクションからドキュメントを取得します。 このメソッドはクエリフィルターを受け取り、一致するすべてのドキュメントを返します。 クエリフィルターは、ドライバーがコレクションのドキュメントを照合するために使用する基準を指定するドキュメントです。
クエリフィルターの詳細については、「 クエリの指定」ガイドを参照してください。
ドキュメントの検索の例
次の例では、 find()
メソッドを使用して、 cuisine
フィールドの値が"Spanish"
であるすべてのドキュメントを検索します。
val results = collection.find(eq(Restaurant::cuisine.name, "Spanish"))
前述の例のfind()
操作はFindIterable
オブジェクトを返します。このオブジェクトは、次の例に示すように、 forEach()
メソッドを使用して反復処理できます。
val results = collection.find(eq(Restaurant::cuisine.name, "Spanish")) results.forEach { result -> println(result) }
Restaurant(name=Tropicoso Club, cuisine=Spanish) Restaurant(name=Beso, cuisine=Spanish) Restaurant(name=Sabor Latino Restaurant, cuisine=Spanish) ...
注意
すべてのドキュメントの検索
コレクション内のすべてのドキュメントを検索するには、 find()
メソッドに空のフィルターを渡します。
val results = collection.find()
検索動作の変更
find()
メソッド呼び出しにメソッドを連鎖させることで、 find()
メソッドの動作を変更できます。 次の表では、クエリの変更に使用される一般的な方法について説明しています。
方式 | 説明 |
---|---|
batchSize() | Limits the number of documents to return per batch. To learn more about
batch size, see cursor.batchSize()
in the MongoDB Server manual. |
collation() | Sets the collation options for the query. |
comment() | Specifies a string to attach to the query. This can help you trace and interpret the
operation in the server logs and in profile data. To learn more about query comments,
see $comment in the MongoDB Server
manual. |
hint() | Specifies the index to use for the query. |
limit() | Limits the number of documents to be returned from the query. |
maxTime() | Sets the maximum execution time on the server for this operation. |
skip() | Sets the number of documents to skip. |
sort() | Defines the sort criteria to apply to the query. |
次の例では、 limit()
メソッドとmaxTime()
メソッドを連結して、クエリによって返されるドキュメント数を10
に制限し、 操作の最大実行時間を10000
ミリ秒に設定します。
val results = collection .find(eq(Restaurant::cuisine.name, "Spanish")) .limit(10) .maxTime(10000)
の動作を変更するメソッドの完全なリストについては、find()
クラスのAPIドキュメント FindIterable
を参照してください。
詳細情報
クエリフィルターの詳細については、「クエリの指定」を参照してください。
Kotlin Sync ドライバーを使用してドキュメントを取得する実行可能なコード例については、「 MongoDB からのデータの読み取り 」を参照してください。
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。