zapytanie projekcyjne to zapytanie, w którym określasz, które pola mają zostać zwrócone.
W MongoDB, gdy wysyłasz zapytanie do kolekcji za pomocą db.collection.find()
metody, możesz określić, które pola chcesz zwrócić.
Możesz to zrobić, umieszczając w zapytaniu nazwy pól i dodając 1
lub 0
obok nich, aby określić, czy należy go zwrócić, czy nie. To jest projekcja parametr. Parametr projekcji 1
wyświetli pole i 0
ukryje to.
Przykład
Najpierw zróbmy zapytanie bez projekcja (abyśmy mogli zobaczyć, ile pól jest zwracanych):
Bez projekcji
db.musicians.find( { instrument: "Vocals"} )
Wynik:
{ "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" } { "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }
Z projekcją
Teraz użyjmy projekcji, aby wyświetlić tylko nazwę pole:
db.musicians.find( { instrument: "Vocals" }, { name: 1 } )
Wynik:
{ "_id" : 1, "name" : "Ian Gillan" } { "_id" : 6, "name" : "Jeff Martin" }
Zauważysz, że _id
pole jest automatycznie dołączane, nawet jeśli go nie określisz. Możesz wykluczyć to pole, używając 0
przeciwko niemu:
db.musicians.find( { instrument: "Vocals" }, { _id: 0, name: 1 } )
Wynik:
{ "name" : "Ian Gillan" } { "name" : "Jeff Martin" }
Mieszanie wtrąceń i wykluczeń
Nie możesz mieszać 1
s i 0
s (z wyjątkiem _id
pole). Jeśli spróbujesz mieszać wtrącenia i wykluczenia, w ten sposób:
db.musicians.find( { instrument: "Vocals" }, { name: 1, born: 0 } )
Otrzymasz ten błąd:
Error: error: { "waitedMS" : NumberLong(0), "ok" : 0, "errmsg" : "Projection cannot have a mix of inclusion and exclusion.", "code" : 2 }
Więc albo uwzględnij pola, albo je wyklucz — nie jedno i drugie.
Oto przykład określania pól przez wykluczenie:
db.musicians.find( { instrument: "Vocals" }, { _id: 0, instrument: 0 } )
Wynik:
{ "name" : "Ian Gillan" } { "name" : "Jeff Martin", "born" : 1969 }