DAM - DAW - MP 0484 Bases de Dades
Projecció de camps
La projecció de camps ens ajuda a trobar dades selectives de la nostra base de dades.
En MongoDB tenim la comanda find que rep un, dos o tres paràmetres:
db.collection.find(query, projection, options)
-
el primer paràmetre, opcional, especifica el filtre de selecció mitjançant operadors de consulta. Per tornar tots els documents d'una col·lecció, podem ometre aquest paràmetre o passar un document buit,
{}. -
el segon paràmetre, opcional, ens permet escollir les columnes que volem visualitzar. Per seleccionar les columnes tenim dues opcions, o bé li diem quines sí volem veure o bé li indiquem quines no volem veure. El camp identificador
_idva a part i, si no diem el contrari, sempre es mostrarà. Per la resta de camps, només podem escollir una de les dues opcions. Per això indicarem amb un 1 o true els camps que volem veure, o amb un 0 o false els que no volem veure. Per tornar tots els camps dels documents coincidents podem ometre aquest paràmetre.Sintaxi de la projecció{ <field1>: <value>, <field2>: <value> ... } -
el tercer paràmetre, opcional, especifica opcions addicionals per a la consulta. Aquestes opcions modifiquen el comportament de la consulta i com es retornen els resultats.
Si un paràmetre és opcional però volem posar-ne un de posterior a ell, cal especificar l'opcional amb un document buit { }.
Ho veurem amb un exemple:
db.estudiants.find(
{ },
{"nom" : 1, "edat" : 1}
)
Possible Resposta
[
{ _id: ObjectId("6811fee74f9158e3e30b96da"), nom: 'Joan', edat: 25 },
{ _id: ObjectId("6811fee74f9158e3e30b96db"), nom: 'Maria', edat: 20 },
{ _id: ObjectId("6811fee74f9158e3e30b96dc"), nom: 'Isabel', edat: 22 }
]
db.estudiants.find(
{ },
{"_id" : 0, "nom" : 1, "edat" : 1}
)
Possible Resposta
[
{ nom: 'Joan', edat: 25 },
{ nom: 'Maria', edat: 20 },
{ nom: 'Isabel', edat: 22 }
]
db.estudiants.find(
{ },
{"nom" : 0, "edat" : 0}
)
Possible Resposta
[
{
_id: ObjectId("6811fee74f9158e3e30b96da"),
id: '0001',
cognoms: 'Bosch',
estudis: "Administració i Direcció d'Empreses",
aficions: [ 'Futbol', 'Lectura' ]
},
{
_id: ObjectId("6811fee74f9158e3e30b96db"),
id: '0002',
cognoms: 'Costa',
estudis: 'Filologia Catalana',
aficions: [ 'Running', 'Cine' ]
},
{
_id: ObjectId("6811fee74f9158e3e30b96dc"),
id: '0003',
cognoms: 'Pons',
estudis: 'Enginyeria Informàtica',
aficions: [ 'Futbol', 'Snowboarding' ]
}
]
db.estudiants.find(
{ },
{"_id" : 0, "nom" : 0, "edat" : 0}
)
Possible Resposta
[
{
id: '0001',
cognoms: 'Bosch',
estudis: "Administració i Direcció d'Empreses",
aficions: [ 'Futbol', 'Lectura' ]
},
{
id: '0002',
cognoms: 'Costa',
estudis: 'Filologia Catalana',
aficions: [ 'Running', 'Cine' ]
},
{
id: '0003',
cognoms: 'Pons',
estudis: 'Enginyeria Informàtica',
aficions: [ 'Futbol', 'Snowboarding' ]
}
]
No podem barrejar 0s i 1s, excepte pel camp _id
No confongueu el camp id propi, amb el camp _id que crea el MongoDB per defecte