プロジェクションクエリ 返されるフィールドを指定するクエリです。
MongoDBで、db.collection.find()
を使用してコレクションをクエリする場合 メソッドでは、返すフィールドを指定できます。
これを行うには、クエリにフィールド名を含め、1
を追加します。 または0
それらの隣に、それが返されるべきかどうかを指定します。これはプロジェクションです パラメータ。 1
の投影パラメータ フィールドと0
が表示されます 非表示にします。
例
まず、なしでクエリを実行しましょう。 射影(返されるフィールドの数を確認できるように):
投影なし
db.musicians.find( { instrument: "Vocals"} )
結果:
{ "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" } { "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }
プロジェクションあり
それでは、プロジェクションを使用して name だけを表示してみましょう。 フィールド:
db.musicians.find( { instrument: "Vocals" }, { name: 1 } )
結果:
{ "_id" : 1, "name" : "Ian Gillan" } { "_id" : 6, "name" : "Jeff Martin" }
_id
に気付くでしょう 指定しなくても、フィールドは自動的に含まれます。 0
を使用すると、このフィールドを除外できます それに対して:
db.musicians.find( { instrument: "Vocals" }, { _id: 0, name: 1 } )
結果:
{ "name" : "Ian Gillan" } { "name" : "Jeff Martin" }
包含と除外の混合
1
を混在させることはできません sおよび0
s(_id
を除く 分野)。次のように、包含と除外を混在させようとすると、次のようになります。
db.musicians.find( { instrument: "Vocals" }, { name: 1, born: 0 } )
このエラーが発生します:
Error: error: { "waitedMS" : NumberLong(0), "ok" : 0, "errmsg" : "Projection cannot have a mix of inclusion and exclusion.", "code" : 2 }
したがって、フィールドを含めるか除外するかを選択します。両方ではありません。
除外によってフィールドを指定する例を次に示します。
db.musicians.find( { instrument: "Vocals" }, { _id: 0, instrument: 0 } )
結果:
{ "name" : "Ian Gillan" } { "name" : "Jeff Martin", "born" : 1969 }