AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

ドキュメントの検索

このガイドでは、 Kotlin Sync ドライバーを使用して、読み取り操作により MongoDB コレクションからデータを検索する方法を学習できます。 find()メソッドを呼び出して、クエリフィルターで指定された一連の条件に一致するドキュメントを検索できます。

このガイドの例では、Atlas サンプル データセットsample_restaurants データベースの restaurants コレクションを使用します。無料の MongoDB 配置を作成し、サンプルデータセットを読み込む方法については、MongoDB の スタートガイドを参照してください。

このコレクション内のドキュメントは、次の Kotlin データ クラスによってモデル化されます。

data class Restaurant(
val name: String,
val cuisine: String
)

find()メソッドは、コレクションからドキュメントを取得します。 このメソッドはクエリフィルターを受け取り、一致するすべてのドキュメントを返します。 クエリフィルターは、ドライバーがコレクションのドキュメントを照合するために使用する基準を指定するドキュメントです。

クエリフィルターの詳細については、「クエリの指定」ガイドを参照してください。

次の例では、first() メソッドを find() メソッド呼び出しに連鎖させて、cuisineフィールドの値が "Spanish" である最初のドキュメントを検索します。

val results = collection.find(eq(Restaurant::cuisine.name, "Spanish")).first()

前述の例の find()操作では、次の例に示すように、印刷可能なMongoDBドキュメントが返されます。

val results = collection.find(eq(Restaurant::cuisine.name, "Spanish")).first()
println(results)
Restaurant(name=Tropicoso Club, cuisine=Spanish)

次の例では、 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()

バッチするごとに返されるドキュメントの数を制限します。 バッチするサイズの詳細については、 MongoDB Serverマニュアルの cursor.batchSize() を参照してください。

collation()

クエリの 照合 オプションを設定します。

comment()

クエリに付属する string を指定します。これは、サーバー ログとプロファイル データでの操作を追跡して解釈するのに役立ちます。

first()

クエリに一致する最初のドキュメントを返すか、一致するドキュメントが存在しない場合はMongoClientExceptionをスローします。

firstOrNull()

クエリに一致する最初のドキュメントを返します。一致するドキュメントが存在しない場合は、 null を返します。

hint()

クエリに使用するインデックスを指定します。

limit()

クエリから返されるドキュメントの数を制限します。

skip()

スキップするドキュメントの数を設定します。

sort()

クエリに適用するソート条件を定義します。

次の例では limit() メソッドを連鎖させて、クエリによって返されるドキュメントの数を 10 に制限します。

val results = collection
.find(eq(Restaurant::cuisine.name, "Spanish"))
.limit(10)

の動作を変更するメソッドの完全なリストについては、find() クラスのAPIドキュメントを参照してください FindIterable

クエリフィルターの詳細については、「クエリの指定」を参照してください。

Kotlin Syncドライバーを使用してドキュメントを取得する実行可能なコード例については、ドキュメントの検索を参照してください。

このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。