Docs Menu
Docs Home
/ / /
PyMongo
/

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

項目一覧

  • Overview
  • サンプル データ
  • プロジェクションのタイプ
  • 含めるフィールドの指定
  • _idフィールドを除外する
  • 除外するフィールドの指定
  • トラブルシューティング
  • <field>「インクルージョンプロジェクションのフィールド「フィールド」を除外できません」
  • 詳細情報
  • API ドキュメント

このガイドでは、プロジェクションを使用して、読み取り操作から返されるフィールドを指定する方法を学習できます。 プロジェクションは、MongoDB がクエリから返すフィールドを指定するドキュメントです。

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

プロジェクションを使用して、返されるドキュメントに含めるフィールドを指定したり、除外するフィールドを指定したりできます。 _idフィールドを除外しない限り、1 つのプロジェクションに包含ステートメントと除外ステートメントを組み合わせることはできません。

結果に含めるフィールドを指定するには、次の構文を使用します。

{ "<Field Name>": 1 }

次の例では、 find()メソッドを使用して、 nameフィールドの値が"Emerald Pub"であるすべてのレストランを検索します。 次に、プロジェクションを使用して、返されたドキュメントのnamecuisineboroughフィールドのみを返します。

results = restaurants.find({ "name" : "Emerald Pub"}, {"name": 1, "cuisine": 1, "borough": 1})
for restaurant in results:
print(restaurant)
{'_id': ObjectId('...'), 'borough': 'Manhattan', 'cuisine': 'American', 'name': 'Emerald Pub'}
{'_id': ObjectId('...'), 'borough': 'Queens', 'cuisine': 'American', 'name': 'Emerald Pub'}

プロジェクションを使用して返されるドキュメントに含めるフィールドを指定すると、 _idフィールドもデフォルトで含まれます。 他のすべてのフィールドは暗黙的に除外されます。 返されるドキュメントから_idフィールドを削除するには、明示的に除外する必要があります。

含めるフィールドを指定する場合は、返されるドキュメントから_idフィールドを除外することもできます。

次の例では、前の例と同じクエリを実行しますが、プロジェクションから_idフィールドを除外しています。

results = restaurants.find({ "name" : "Emerald Pub"}, {"_id": 0, "name": 1, "cuisine": 1, "borough": 1})
for restaurant in results:
print(restaurant)
{'borough': 'Manhattan', 'cuisine': 'American', 'name': 'Emerald Pub'}
{'borough': 'Queens', 'cuisine': 'American', 'name': 'Emerald Pub'}

結果から除外するフィールドを指定するには、次の構文を使用します。

{ "<Field Name>": 0 }

次の例では、 find()メソッドを使用して、 nameフィールドの値が"Emerald Pub"であるすべてのレストランを検索します。 次に、プロジェクションを使用して、返されたドキュメントから フィールドと フィールドを除外します。gradesaddress

results = restaurants.find({ "name" : "Emerald Pub"}, {"grades": 0, "address": 0} )
for restaurant in results:
print(restaurant)
{'_id': ObjectId('...'), 'borough': 'Manhattan', 'cuisine': 'American', 'name': 'Emerald Pub', 'restaurant_id': '40367329'}
{'_id': ObjectId('...'), 'borough': 'Queens', 'cuisine': 'American',
'name': 'Emerald Pub', 'restaurant_id': '40668598'}

プロジェクションを使用して除外するフィールドを指定すると、指定されていないフィールドは返されるドキュメントに暗黙的に含まれます。

次のセクションでは、プロジェクションを使用するときに発生する可能性のあるエラーについて説明します。

単一のプロジェクションにフィールドを含め、除外しようとすると、ドライバーはこのメッセージとともにOperationFailureを返します。 プロジェクションが、含めるフィールドまたは除外するフィールドのみを指定していることを確認します。

プロジェクションの詳細については、MongoDB Server マニュアルの「プロジェクト フィールド 」ガイドを参照してください。

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

戻る

Retrieve Data