MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB – Projektionsabfragen

Eine Projektionsabfrage ist eine Abfrage, bei der Sie angeben, welche Felder zurückgegeben werden sollen.

In MongoDB, wenn Sie eine Sammlung mit db.collection.find() abfragen -Methode können Sie angeben, welche Felder zurückgegeben werden sollen.

Sie können dies tun, indem Sie die Feldnamen in Ihre Abfrage aufnehmen und eine 1 hinzufügen oder 0 daneben, um anzugeben, ob es zurückgegeben werden soll oder nicht. Dies ist eine Projektion Parameter. Ein Projektionsparameter von 1 zeigt das Feld und eine 0 an wird es verstecken.

Beispiel

Lassen Sie uns zuerst eine Abfrage ohne durchführen Projektion (damit wir sehen können, wie viele Felder zurückgegeben werden):

Ohne Projektion

db.musicians.find( { instrument: "Vocals"} )

Ergebnis:

{ "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" }
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }

Mit Projektion

Lassen Sie uns nun die Projektion verwenden, um nur den Namen anzuzeigen Feld:

db.musicians.find( { instrument: "Vocals" }, { name: 1 } )

Ergebnis:

{ "_id" : 1, "name" : "Ian Gillan" }
{ "_id" : 6, "name" : "Jeff Martin" }

Sie werden feststellen, dass die _id Feld automatisch eingeschlossen, auch wenn Sie es nicht angeben. Sie können dieses Feld ausschließen, indem Sie eine 0 verwenden dagegen:

db.musicians.find( { instrument: "Vocals" }, { _id: 0, name: 1 } )

Ergebnis:

{ "name" : "Ian Gillan" }
{ "name" : "Jeff Martin" }

Einschlüsse und Ausschlüsse mischen

Sie können 1 nicht mischen s und 0 s (mit Ausnahme der _id Feld). Wenn Sie versuchen, Einschlüsse und Ausschlüsse zu mischen, gehen Sie wie folgt vor:

db.musicians.find( { instrument: "Vocals" }, { name: 1, born: 0 } )

Sie erhalten am Ende diesen Fehler:

Error: error: {
	"waitedMS" : NumberLong(0),
	"ok" : 0,
	"errmsg" : "Projection cannot have a mix of inclusion and exclusion.",
	"code" : 2
}

Sie können also entweder Felder einschließen oder ausschließen – nicht beides.

Hier ist ein Beispiel für die Angabe von Feldern durch Ausschluss:

db.musicians.find( { instrument: "Vocals" }, { _id: 0, instrument: 0 } )

Ergebnis:

{ "name" : "Ian Gillan" }
{ "name" : "Jeff Martin", "born" : 1969 }