ソート ビルダ
Overview
このガイドでは、MongoDB Java ドライバーのビルダを使用してクエリのソート基準を指定する方法を学びます。
ソート基準は、MongoDB がデータをソートするために使用するルールです。 ソート条件の例は、次のとおりです。
最小数から最大数へ
時刻までの時刻から最新時刻まで
名がアルファベット順に並べられている
ビルダは MongoDB Java ドライバーによって提供されるクラスで、 BSONオブジェクトの構築に役立ちます。 詳細については、ビルダに関するガイド をご覧ください。
ビルダを使用してクエリのソート条件を指定する場合は、こちらのガイドをお読みください。
MongoDB Java ドライバーでソートの基礎を学習したい場合は、ソートに関するガイドをお読みください。
このページの例では、次のドキュメントを含むサンプル コレクションを使用します。
{ "_id": 1, "date": "2022-01-03", "orderTotal": 17.86, "description": "1/2 lb cream cheese and 1 dozen bagels" }, { "_id": 2, "date": "2022-01-11", "orderTotal": 83.87, "description": "two medium strawberry birthday cakes" }, { "_id": 3, "date": "2022-01-11", "orderTotal": 19.49, "description": "1 dozen strawberry cupcakes" }, { "_id": 4, "date": "2022-01-15", "orderTotal": 43.62, "description": "2 chicken lunches and a diet coke" }, { "_id": 5, "date": "2022-01-23", "orderTotal": 10.99, "description": "1 bagel, 1 orange juice, 1 muffin" }, { "_id": 6, "date": "2022-01-23", "orderTotal": 60.31, "description": "one large strawberry and chocolate cake" }
sorts クラス
Sorts
クラスは、MongoDB でサポートされているすべての並べ替え条件演算子の静的ファクトリー メソッドを提供するビルダです。 これらのメソッドはBson
オブジェクトを返します。これは、 FindIterable
インスタンスのsort()
メソッドまたはAggregates.sort()
に渡すことができます。 Aggregates
クラスの詳細については、 集計ビルダに関するガイド を参照してください。
このセクションのクラスとインターフェースの詳細については、次の API ドキュメントを参照してください。
上昇
昇順の並べ替えを指定するには、 Sorts.ascending()
静的ファクトリー メソッドを使用します。 並べ替えるフィールドの名前をSorts.ascending()
に渡します。
次の例では、サンプル コレクション内のドキュメントを_id
フィールドの昇順でソートします。
import static com.mongodb.client.model.Sorts.ascending; // <MongoCollection setup code here> collection.find().sort(ascending("_id"));
前の例の出力は、次のようになります。
{ "_id": 1, "date": "2022-01-03", "orderTotal": 17.86, "description": "1/2 lb cream cheese and 1 dozen bagels" } { "_id": 2, "date": "2022-01-11", "orderTotal": 83.87, "description": "two medium strawberry birthday cakes" } { "_id": 3, "date": "2022-01-11", "orderTotal": 19.49, "description": "1 dozen strawberry cupcakes" } ...
下降
降順の並べ替えを指定するには、 Sorts.descending()
静的ファクトリー メソッドを使用します。 並べ替えるフィールドの名前をSorts.descending()
に渡します。
次の例では、サンプル コレクション内のドキュメントを_id
フィールドで降順にソートします。
import static com.mongodb.client.model.Sorts.descending; // <MongoCollection setup code here> collection.find().sort(descending("_id"));
上記の例では、次のようなものが出力されます。
{ "_id": 6, "date": "2022-01-23", "orderTotal": 60.31, "description": "one large strawberry and chocolate cake" } { "_id": 5, "date": "2022-01-23", "orderTotal": 10.99, "description": "1 bagel, 1 orange juice, 1 muffin" } { "_id": 4, "date": "2022-01-15", "orderTotal": 43.62, "description": "2 chicken lunches and a diet coke" } ...
ソート条件の組み合わせ
並べ替え条件を結合するには、 Sorts.orderBy()
静的ファクトリー メソッドを使用します。 このメソッドは、ソート条件の順序付きリストを含むオブジェクトを構築します。 ソートを実行する際に、左端のソート条件が同値になった場合、ソートはリスト内の次のソート条件を使用して順序を決定します。
次の例では、サンプルコレクション内のドキュメントをletter
フィールドで降順でソートし、同点の場合は_id
フィールドで昇順にソートします。
import static com.mongodb.client.model.Sorts.orderBy; import static com.mongodb.client.model.Sorts.ascending; import static com.mongodb.client.model.Sorts.descending; // <MongoCollection setup code here> Bson orderBySort = orderBy(descending("date"), ascending("orderTotal")); collection.find().sort(orderBySort);
前の例の出力は、次のようになります。
{ "_id": 5, "date": "2022-01-23", "orderTotal": 10.99, "description": "1 bagel, 1 orange juice, 1 muffin" } { "_id": 6, "date": "2022-01-23", "orderTotal": 60.31, "description": "one large strawberry and chocolate cake" } { "_id": 4, "date": "2022-01-15", "orderTotal": 43.62, "description": "2 chicken lunches and a diet coke" } { "_id": 3, "date": "2022-01-11", "orderTotal": 19.49, "description": "1 dozen strawberry cupcakes" } { "_id": 2, "date": "2022-01-11", "orderTotal": 83.87, "description": "two medium strawberry birthday cakes" } { "_id": 1, "date": "2022-01-03", "orderTotal": 17.86, "description": "1/2 lb cream cheese and 1 dozen bagels" }
テキストスコア
テキスト検索結果は、検索結果が検索stringとどの程度一致するかを示す値であるテキスト スコアで並べ替えることができます。 テキスト検索のテキスト スコアで並べ替えを指定するには、 Sorts.metaTextScore()
静的ファクトリー メソッドを使用します。 Sorts.metaTextScore()
メソッドを使用してソート条件を指定する方法の詳細な例については、ソートの基礎ガイドの「テキスト検索」セクションを参照してください。
詳細については、「 ソート 」クラス を参照してください API ドキュメント。