プロジェクションクエリ 返されるフィールドを指定するクエリです。
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 }