sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB - Projektionsforespørgsler

En projektionsforespørgsel er en forespørgsel, hvor du angiver, hvilke felter der skal returneres.

I MongoDB, når du forespørger en samling ved hjælp af db.collection.find() metode, kan du angive, hvilke felter du gerne vil have returneret.

Du kan gøre dette ved at inkludere feltnavnene i din forespørgsel og tilføje en 1 eller 0 ved siden af ​​dem, for at angive, om det skal returneres eller ej. Dette er en projektion parameter. En projektionsparameter på 1 vil vise feltet og en 0 vil skjule det.

Eksempel

Lad os først lave en forespørgsel uden projektion (så vi kan se, hvor mange felter der returneres):

Uden projektion

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

Resultat:

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

Med projektion

Lad os nu bruge projektion til kun at vise navnet felt:

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

Resultat:

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

Du vil bemærke, at _id felt medtages automatisk, selvom du ikke angiver det. Du kan ekskludere dette felt ved at bruge en 0 imod det:

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

Resultat:

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

Blanding af inklusioner og ekskluderinger

Du kan ikke blande 1 s og 0 s (med undtagelse af _id Mark). Hvis du prøver at blande indeslutninger og ekskluderinger, sådan her:

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

Du vil ende med denne fejl:

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

Så du skal enten inkludere felter eller ekskludere dem - ikke begge dele.

Her er et eksempel på angivelse af felter ved ekskludering:

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

Resultat:

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

  1. Filtrer med regex MongoDB C#-driver

  2. Sådan konverteres streng til objectId i LocalField for $lookup Mongodb

  3. Hvordan opdaterer man redis efter opdatering af databasen?

  4. Python redis subscribe kan ikke få alle data?