Docs Menu
Docs Home
/ / /
Ruby ドライバー
/

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

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

このガイドの例では、 Atlasサンプルデータセットsample_restaurantsデータベース内の restaurantsコレクションを使用します。Rubyアプリケーションからこのコレクションにアクセスするには、Atlas クラスターに接続する Mongo::Clientオブジェクトを作成し、次の値を database 変数と collection 変数に割り当てます。

database = client.use('sample_restaurants')
collection = database[:restaurants]

MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 「Atlas を使い始める」ガイドを参照してください。

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

読み取り操作の結果に特定のフィールドを含めるには、find メソッドのパラメーターで projection オプションを指定します。このオプションを設定するには、次の構文を使用します。

{ projection: { <field_name>: 1 } }

次の例では、find メソッドを使用して、nameフィールドの値が 'Emerald Pub' であるすべてのレストランを検索します。次に、コードは projection オプションを指定して、一致するドキュメントの namecuisineborough フィールドのみを返すように検索操作に指示します。

opts = { projection: { name: 1, cuisine: 1, borough: 1 } }
collection.find({ name: 'Emerald Pub' }, opts).each do |doc|
puts doc
end
{"_id"=>BSON::ObjectId('...'), "borough"=>"Manhattan", "cuisine"=>"American", "name"=>"Emerald Pub"}
{"_id"=>BSON::ObjectId('...'), "borough"=>"Queens", "cuisine"=>"American", "name"=>"Emerald Pub"}

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

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

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

opts = { projection: { name: 1, cuisine: 1, borough: 1, _id: 0 } }
collection.find({ name: 'Emerald Pub' }, opts).each do |doc|
puts doc
end
{"borough"=>"Manhattan", "cuisine"=>"American", "name"=>"Emerald Pub"}
{"borough"=>"Queens", "cuisine"=>"American", "name"=>"Emerald Pub"}

読み取り操作結果から特定のフィールドを除外するには、find メソッドのパラメーターで projection オプションを指定します。このオプションを設定するには、次の構文を使用します。

{ projection: { <field_name>: 0 } }

次の例では、find メソッドを使用して、nameフィールドの値が 'Emerald Pub' であるすべてのレストランを検索します。次に、コードは projection オプションを使用して、結果内の grades フィールドと address フィールドを省略するように検索操作に指示します。

opts = { projection: { grades: 0, address: 0 } }
collection.find({ name: 'Emerald Pub' }, opts).each do |doc|
puts doc
end
{"_id"=>BSON::ObjectId('...'), "borough"=>"Manhattan", "cuisine"=>"American",
"name"=>"Emerald Pub", "restaurant_id"=>"40367329"}
{"_id"=>BSON::ObjectId('...'), "borough"=>"Queens", "cuisine"=>"American",
"name"=>"Emerald Pub", "restaurant_id"=>"40668598"}

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

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

find メソッドの詳細については、APIドキュメントを参照してください。

戻る

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

項目一覧