Docs Menu

Docs Homeアプリケーションの開発Python ドライバーPyMongo

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

項目一覧

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

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

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

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

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

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

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

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

results = restaurants.find({ "cuisine" : "Italian"}).limit(5)
for restaurant in results:
print(restaurant["name"])
Isle Of Capri Resturant Italian
Arturo'S Italian
Patsy'S Italian Restaurant Italian
Piccola Venezia Italian
Roadhouse Restaurant Italian

また、 find()メソッドでlimitパラメータを指定して、返されるドキュメントの数を制限することもできます。

results = restaurants.find({ "cuisine" : "Italian"}, limit=5)
for restaurant in results:
print(restaurant["name"])
Isle Of Capri Resturant Italian
Arturo'S Italian
Patsy'S Italian Restaurant Italian
Piccola Venezia Italian
Roadhouse Restaurant Italian

Tip

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

To return documents in a specified order, call the sort() method. sort()メソッドは、結果を並べ替えるフィールドと並べ替え方向の 2 つのパラメータを取ります。 並べ替え方向を指定するには、 pymongo.ASCENDINGまたはpymongo.DESCENDINGのいずれかを指定します。 ASCENDINGは最小値から最大値の順にソートし、 DESCENDINGは最大値から最小値の順にソートします。 どちらの方向も指定しない場合、 メソッドはデフォルトで昇順でソートします。

次の例では、昇順でソートされた"Italian"cuisine値を持つすべてのドキュメントを返します。

results = restaurants.find({ "cuisine" : "Italian"}).sort("name", pymongo.ASCENDING)
for restaurant in results:
print(restaurant["name"])
(Lewis Drug Store) Locanda Vini E Olii
101 Restaurant And Bar
44 Sw Ristorante & Bar
900 Park
A Voce
...
Zucchero E Pomodori

find()メソッドでsortパラメータを指定して、ドキュメントを並べ替えることもできます。 次の例では、 sortパラメーターを指定して、前の例と同じ順序で結果を返します。

results = restaurants.find({ "cuisine" : "Italian"}, sort={"name": pymongo.ASCENDING} )
for restaurant in results:
print(restaurant["name"])
(Lewis Drug Store) Locanda Vini E Olii
101 Restaurant And Bar
44 Sw Ristorante & Bar
900 Park
A Voce
...
Zucchero E Pomodori

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

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

results = restaurants.find({ "borough" : "Manhattan"}).skip(10)
for restaurant in results:
print(restaurant["name"])
Dorrian'S Red Hand Restaurant
The Princeton Club
Moran'S Chelsea
La Parisienne Diner
Jimmy'S Corner
...

また、 find()メソッドのskipパラメータを使用して、返されたドキュメントをスキップすることもできます。 次の例では、前の例と同じスキップを指定しています。

results = restaurants.find({ "borough" : "Manhattan"}, skip=10)
for restaurant in results:
print(restaurant["name"])
Dorrian'S Red Hand Restaurant
The Princeton Club
Moran'S Chelsea
La Parisienne Diner
Jimmy'S Corner
...

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

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

results = restaurants.find({ "cuisine" : "Italian"}) \
.sort("name", pymongo.ASCENDING) \
.limit(5) \
.skip(10)
for restaurant in results:
print(restaurant["name"])
Acqua
Acqua Restaurant
Acqua Santa
Acquista Trattoria
Acquolina Catering

注意

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

find()メソッドのパラメーターとして指定して、結果を制限、並べ替え、スキップすることもできます。 次の例では、前の例と同じクエリを指定しています。

results = restaurants.find({ "cuisine" : "Italian"}, limit=5, sort={"name": pymongo.ASCENDING}, skip=10)
for restaurant in results:
print(restaurant["name"])
Acqua
Acqua Restaurant
Acqua Santa
Acquista Trattoria
Acquolina Catering

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

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

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

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