sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB - Projektionsfrågor

En projektionsfråga är en fråga där du anger vilka fält som ska returneras.

I MongoDB, när du frågar en samling med db.collection.find() metod kan du ange vilka fält du vill ha returnerat.

Du kan göra detta genom att inkludera fältnamnen i din fråga och lägga till en 1 eller 0 bredvid dem, för att ange om den ska returneras eller inte. Detta är en projektion parameter. En projektionsparameter för 1 kommer att visa fältet och en 0 kommer att dölja det.

Exempel

Låt oss först göra en fråga utan projektion (så att vi kan se hur många fält som returneras):

Utan 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

Låt oss nu använda projektion för att bara visa namnet fält:

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

Resultat:

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

Du kommer att märka att _id fältet inkluderas automatiskt, även om du inte anger det. Du kan utesluta det här fältet genom att använda en 0 emot det:

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

Resultat:

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

Blanda inneslutningar och undantag

Du kan inte blanda 1 s och 0 s (med undantag för _id fält). Om du försöker blanda inneslutningar och uteslutningar, så här:

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

Du kommer att få det här felet:

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

Så att du antingen inkluderar fält eller exkluderar dem – inte båda.

Här är ett exempel på hur du anger fält genom uteslutning:

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

Resultat:

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

  1. Vad är skillnaden mellan findAndModify och update i MongoDB?

  2. MongoDB jämför endast datum utan tider

  3. Mongodb kommer inte att starta

  4. I Flask konvertera form POST-objekt till en representation lämplig för mongodb