sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB - Consultas de proyección

Una consulta de proyección es una consulta en la que especifica qué campos deben devolverse.

En MongoDB, cuando consulta una colección usando db.collection.find() método, puede especificar qué campos le gustaría haber devuelto.

Puede hacerlo incluyendo los nombres de los campos en su consulta y agregando un 1 o 0 junto a ellos, para especificar si se debe devolver o no. Esta es una proyección parámetro. Un parámetro de proyección de 1 mostrará el campo y un 0 lo ocultará.

Ejemplo

Primero hagamos una consulta sin proyección (para que podamos ver cuántos campos se devuelven):

Sin Proyección

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

Resultado:

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

Con Proyección

Ahora, usemos la proyección para mostrar solo el nombre campo:

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

Resultado:

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

Notarás que el _id El campo se incluye automáticamente, incluso si no lo especifica. Puede excluir este campo usando un 0 en contra:

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

Resultado:

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

Mezclar inclusiones y exclusiones

No puedes mezclar 1 s y 0 s (con la excepción de _id campo). Si intenta mezclar inclusiones y exclusiones, así:

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

Terminarás con este error:

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

Entonces, para incluir campos o excluirlos, no ambos.

Este es un ejemplo de cómo especificar campos por exclusión:

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

Resultado:

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