Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

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

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

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

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

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

このガイドの例では、Atlas サンプル データセットにある sample_mflix データベースの movies コレクションを使用します。MongoDB Atlas クラスターを作成し、サンプル データセットをロードする方法については、「Atlas スタートガイド」をご覧ください。

読み取り操作から返されるドキュメントの最大数を指定するには、操作に limit オプションを適用します。このオプションは、limit メソッドを find メソッドに連結することで設定できます。

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

let mut cursor = my_coll
.find(doc! { "cuisine": "Italian" })
.limit(5)
.await?;
while let Some(result) = cursor.try_next().await? {
println!("{:?}", result);
}
Restaurant { name: "V & T Restaurant", cuisine: "Italian" }
Restaurant { name: "Gargiulo'S Restaurant", cuisine: "Italian" }
Restaurant { name: "Patsy'S Italian Restaurant", cuisine: "Italian" }
Restaurant { name: "John'S Restaurant", cuisine: "Italian" }
Restaurant { name: "Ferdinando'S Restaurant", cuisine: "Italian" }

Tip

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

指定した順序でドキュメントを返すには、 読み取り操作に sort オプションを適用します。このオプションは、sort setter メソッドを find メソッドに連結することで設定できます。

sort を呼び出すときに、フィールドを渡して、結果を と並べ替え方向で並べ替えます。並べ替え方向の値が 1 の場合、値は最低から最高の順にソートされ、-1 の値は最高から最低の順にソートされます。ソートを指定しない場合、 MongoDB はクエリ結果の順序を保証しません。

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

let mut cursor = my_coll
.find(doc! { "cuisine": "Italian" })
.sort(doc! { "name": 1 })
.await?;
while let Some(result) = cursor.try_next().await? {
println!("{:?}", result);
}
Restaurant { name: "Antonio'S Trattoria", cuisine: "Italian" }
Restaurant { name: "Antonioni'S", cuisine: "Italian" }
Restaurant { name: "Antonucci", cuisine: "Italian" }
...
Restaurant { name: "Zucchero E Pomodori", cuisine: "Italian" }

クエリ結果を返す前に指定した数のドキュメントをスキップするには、読み取り操作に skip オプションを適用します。このオプションは、skip setter メソッドを find メソッドに連結することで設定できます。

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

let mut cursor = my_coll
.find(doc! { "borough": "Manhattan" })
.skip(10)
.await?;
while let Some(result) = cursor.try_next().await? {
println!("{:?}", result);
}
Restaurant { name: "Beyond Thai Kitchen", cuisine: "Thai" }
Restaurant { name: "Rainbow Room", cuisine: "American" }
...
Restaurant { name: "Fairfield Inn Suites Penn Station", cuisine: "Other" }

limitsortskip メソッドを単一の find メソッド呼び出しに連鎖させることができます。 これにより、 読み取り操作から返されるソートされたドキュメントの最大数を設定でき、返される前に指定された数のドキュメントをスキップできます。

次の例では、 cuisine の値が 'Italian' である 5 ドキュメントが返されます。 結果は nameフィールド値の昇順でソートされ、最初の 10 ドキュメントはスキップされます。

let mut cursor = my_coll
.find(doc! { "cuisine": "Italian" })
.sort(doc! { "name": 1 })
.skip(10)
.limit(5)
.await?;
while let Some(result) = cursor.try_next().await? {
println!("{:?}", result);
}
Restaurant { name: "Acqua", cuisine: "Italian" }
Restaurant { name: "Acqua Restaurant", cuisine: "Italian" }
Restaurant { name: "Acqua Santa", cuisine: "Italian" }
Restaurant { name: "Acquista Trattoria", cuisine: "Italian" }
Restaurant { name: "Acquolina Catering", cuisine: "Italian" }

注意

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

ドキュメント検索の詳細については、 ドキュメントの検索ガイドをご覧ください。

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

findメソッドとそのオプションについて詳しくは、 APIドキュメント を参照してください。

戻る

ドキュメントの検索

項目一覧