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 }