dotaz na projekci je dotaz, kde zadáváte, která pole mají být vrácena.
Když v MongoDB zadáte dotaz na kolekci pomocí db.collection.find() můžete určit, která pole chcete vrátit.
Můžete to udělat tak, že do dotazu zahrnete názvy polí a přidáte 1 nebo 0 vedle nich určit, zda má být vrácen nebo ne. Toto je projekce parametr. Parametr projekce 1 zobrazí pole a 0 skryje to.
Příklad
Nejprve proveďte dotaz bez projekce (takže můžeme vidět, kolik polí se vrátí):
Bez projekce
db.musicians.find( { instrument: "Vocals"} ) Výsledek:
{ "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" }
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }
S projekcí
Nyní pomocí projekce zobrazíme pouze name pole:
db.musicians.find( { instrument: "Vocals" }, { name: 1 } ) Výsledek:
{ "_id" : 1, "name" : "Ian Gillan" }
{ "_id" : 6, "name" : "Jeff Martin" }
Všimnete si, že _id pole je automaticky zahrnuto, i když jej nezadáte. Toto pole můžete vyloučit pomocí 0 proti:
db.musicians.find( { instrument: "Vocals" }, { _id: 0, name: 1 } ) Výsledek:
{ "name" : "Ian Gillan" }
{ "name" : "Jeff Martin" }
Míchání zahrnutí a vyloučení
1 nelze kombinovat s a 0 s (s výjimkou _id pole). Pokud se pokusíte smíchat zahrnutí a vyloučení, postupujte takto:
db.musicians.find( { instrument: "Vocals" }, { name: 1, born: 0 } ) Skončíte s touto chybou:
Error: error: {
"waitedMS" : NumberLong(0),
"ok" : 0,
"errmsg" : "Projection cannot have a mix of inclusion and exclusion.",
"code" : 2
}
Můžete tedy pole buď zahrnout, nebo je vyloučit – nikoli obojí.
Zde je příklad určení polí vyloučením:
db.musicians.find( { instrument: "Vocals" }, { _id: 0, instrument: 0 } ) Výsledek:
{ "name" : "Ian Gillan" }
{ "name" : "Jeff Martin", "born" : 1969 }