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 }