Docs Menu
Docs Home
/ / /
Kotlin Sync ドライバー
/

返すドキュメントを指定する

項目一覧

  • Overview
  • サンプル データ
  • Limit
  • Sort
  • スキップ
  • 制限、ソート、スキップの組み合わせ
  • 詳細情報
  • API ドキュメント

このガイドでは、次のメソッドを使用して、読み取り操作から返されるドキュメントを指定する方法を学習できます。

  • limit(): クエリから返されるドキュメントの最大数を指定します

  • sort(): 返されるドキュメントのソート順序を指定します

  • skip(): クエリ結果を返す前にスキップするドキュメントの数を指定します

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

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

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

読み取り操作から返されるドキュメントの最大数を指定するには、 limit()メソッドを呼び出します。

次の例では、 cuisineフィールドの値が"Italian"であるすべてのレストランを検索し、結果を5ドキュメントに制限します。

val results = collection
.find(eq(Restaurant::cuisine.name, "Italian"))
.limit(5)
results.forEach { result ->
println(result)
}
Restaurant(name=Philadelphia Grille Express, borough=Brooklyn, cuisine=Italian)
Restaurant(name=Isle Of Capri Resturant, borough=Manhattan, cuisine=Italian)
Restaurant(name=Marchis Restaurant, borough=Manhattan, cuisine=Italian)
Restaurant(name=Crystal Room, borough=Staten Island, cuisine=Italian)
Restaurant(name=Forlinis Restaurant, borough=Manhattan, cuisine=Italian)

Tip

上記の例では、クエリによって返された最初の 5 つのドキュメントが自然な順序で返されます。 次のセクションでは、指定されたソート順序でドキュメントを返す方法について説明します。

指定した順序でドキュメントを返すには、 sort()メソッドを呼び出します。 sort()メソッドは、並べ替え方向をパラメーターとして受け取ります。 並べ替え方向を指定するには、Sorts.ascending() Sorts.descending()メソッドまたは メソッドを使用します。Sorts.ascending()メソッドは値を最低から最高の順にソートし、 Sorts.descending()メソッドは値を最高から最低の順にソートします。 並べ替え方向を指定しない場合、 sort()はドキュメントを昇順で返します。

次の例では、cuisine フィールドの値が"Italian" であるすべてのドキュメントを、name フィールドの値で昇順にソートして返します。

val results = collection
.find(eq(Restaurant::cuisine.name, "Italian"))
.sort(Sorts.ascending(Restaurant::name.name))
results.forEach { result ->
println(result)
}
Restaurant(name=(Lewis Drug Store) Locanda Vini E Olii, borough=Brooklyn, cuisine=Italian)
Restaurant(name=101 Restaurant And Bar, borough=Brooklyn, cuisine=Italian)
Restaurant(name=44 Sw Ristorante & Bar, borough=Manhattan, cuisine=Italian)
Restaurant(name=900 Park, borough=Bronx, cuisine=Italian)
Restaurant(name=A Voce, borough=Manhattan, cuisine=Italian)
...

クエリ結果を返す前に指定した数のドキュメントをスキップするには、 skip()メソッドを呼び出して、スキップするドキュメント数を渡します。 skip()メソッドは、クエリ結果内の指定された数のドキュメントを無視し、残りを返します。

次の例では、 cuisineフィールドの値が"Italian"であるすべてのドキュメントを返し、最初の10ドキュメントをスキップします。

val results = collection
.find(eq(Restaurant::cuisine.name, "Italian"))
.skip(10)
results.forEach { result ->
println(result)
}
Restaurant(name=San Pietro, borough=Manhattan, cuisine=Italian)
Restaurant(name=Manetta's Ristorante, borough=Queens, cuisine=Italian)
Restaurant(name=Salvi Restaurant, borough=Brooklyn, cuisine=Italian)
Restaurant(name=Tommaso Restaurant, borough=Brooklyn, cuisine=Italian)
Restaurant(name=Da Rosina Restaurant, borough=Manhattan, cuisine=Italian)
...

1 回の操作で、 limit()sort()skip()メソッドを組み合わせることができます。 これにより、返されるソートされたドキュメントの最大数を設定して、返される前に指定された数のドキュメントをスキップできます。

次の例では、 cuisineの フィールド値が"Italian"であるドキュメントを返します。 結果はアルファベット順にソートされ、最初の10ドキュメントをスキップし、結果を5ドキュメントに限定します。

val results = collection
.find(eq(Restaurant::cuisine.name, "Italian"))
.sort(Sorts.ascending(Restaurant::name.name))
.skip(10)
.limit(5)
results.forEach { result ->
println(result)
}
Restaurant(name=Acqua, borough=Manhattan, cuisine=Italian)
Restaurant(name=Acqua Restaurant, borough=Manhattan, cuisine=Italian)
Restaurant(name=Acqua Santa, borough=Brooklyn, cuisine=Italian)
Restaurant(name=Acquista Trattoria, borough=Queens, cuisine=Italian)
Restaurant(name=Acquolina Catering, borough=Manhattan, cuisine=Italian)

注意

これらのメソッドを呼び出す順序によって、返されるドキュメントは変更されません。 ドライバーは、ソートとスキップ操作を最初に実行し、その後に制限操作を実行するために、呼び出しの順序を自動的に並べ替えます。

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

ドキュメントの取得の詳細については、「データの取得 」を参照してください。

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

戻る

返すフィールドを指定する