sql >> Database >  >> NoSQL >> MongoDB

MongoDB - Projectievragen

Een projectiequery is een query waarin u specificeert welke velden moeten worden geretourneerd.

In MongoDB, wanneer u een verzameling opvraagt ​​met behulp van de db.collection.find() methode, kunt u aangeven welke velden u wilt teruggeven.

U kunt dit doen door de veldnamen in uw zoekopdracht op te nemen en een 1 . toe te voegen of 0 ernaast om aan te geven of het moet worden geretourneerd of niet. Dit is een projectie parameter. Een projectieparameter van 1 geeft het veld weer en een 0 zal het verbergen.

Voorbeeld

Laten we eerst een zoekopdracht uitvoeren zonder projectie (zodat we kunnen zien hoeveel velden worden geretourneerd):

Zonder projectie

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

Resultaat:

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

Met projectie

Laten we nu projectie gebruiken om alleen de naam . weer te geven veld:

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

Resultaat:

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

U zult merken dat de _id veld wordt automatisch opgenomen, zelfs als u het niet opgeeft. U kunt dit veld uitsluiten door een 0 . te gebruiken tegen:

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

Resultaat:

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

Inclusies en uitsluitingen mengen

Je kunt 1 niet combineren s en 0 s (met uitzondering van de _id veld). Als u insluitsels en uitsluitingen probeert te combineren, gaat u als volgt te werk:

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

Je krijgt deze foutmelding:

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

Dus u kunt velden opnemen of uitsluiten - niet beide.

Hier is een voorbeeld van het specificeren van velden door uitsluiting:

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

Resultaat:

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

  1. NestJS:hoe u op sessies gebaseerde gebruikersauthenticatie implementeert

  2. Gesorteerde lijsten in Redis gebruiken

  3. Plan Node.js-taak elke vijf minuten

  4. Hoe redis pub/sub ontwerpen voor een instant messaging-systeem?