Salta el contingut

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:

Sintaxi del find
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 _id va 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:

Indiquem amb 1 o true, els camps que volem veure
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 }
]
Indiquem amb 1 o true, els camps que volem veure. Ara eliminem el _id especificant-li 0
db.estudiants.find(
    { },
    {"_id" : 0, "nom" : 1, "edat" : 1}
)
Possible Resposta
[
    { nom: 'Joan', edat: 25 },
    { nom: 'Maria', edat: 20 },
    { nom: 'Isabel', edat: 22 }
]
Indiquem amb 0 o false, els camps que no volem veure
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' ]
    }
]
Indiquem amb 0 o false, els camps que no volem veure. Ara també eliminem el _id
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