En aquest tema, explorarem els diferents tipus de dades que MongoDB suporta. Entendre els tipus de dades és crucial per dissenyar esquemes eficients i per assegurar que les operacions CRUD es realitzin correctament.

Tipus de Dades Bàsics

MongoDB suporta una àmplia varietat de tipus de dades. A continuació, es presenten els tipus de dades més comuns:

  1. String: Utilitzat per representar dades de text. Els strings en MongoDB han de ser codificats en UTF-8.

    { "nom": "Joan" }
    
  2. Integer: Utilitzat per representar nombres enters. MongoDB suporta integers de 32 bits i 64 bits.

    { "edat": 30 }
    
  3. Boolean: Utilitzat per representar valors de veritat (true) o falsedat (false).

    { "actiu": true }
    
  4. Double: Utilitzat per representar nombres de punt flotant.

    { "preu": 19.99 }
    
  5. Array: Utilitzat per representar llistes de valors. Els arrays poden contenir valors de diferents tipus.

    { "aficions": ["lectura", "esports", "música"] }
    
  6. Object: Utilitzat per representar documents incrustats. Els objectes poden contenir altres objectes i arrays.

    { "adreça": { "carrer": "Carrer Major", "ciutat": "Barcelona" } }
    
  7. Date: Utilitzat per representar dates. MongoDB emmagatzema les dates com a mil·lisegons des de l'època Unix.

    { "data_naixement": ISODate("1990-01-01T00:00:00Z") }
    
  8. ObjectId: Utilitzat per representar identificadors únics de documents. Cada document en una col·lecció té un camp _id que és un ObjectId per defecte.

    { "_id": ObjectId("507f1f77bcf86cd799439011") }
    
  9. Null: Utilitzat per representar valors nuls o absència de valor.

    { "segon_nom": null }
    
  10. Binary Data: Utilitzat per representar dades binàries.

    { "imatge": BinData(0, "base64encodeddata") }
    
  11. Regular Expression: Utilitzat per representar expressions regulars.

    { "patró": /abc/i }
    

Exemples Pràctics

Exemple 1: Creant un Document amb Diversos Tipus de Dades

{
  "nom": "Maria",
  "edat": 28,
  "actiu": true,
  "salari": 3500.50,
  "aficions": ["pintura", "viatges"],
  "adreça": {
    "carrer": "Carrer de la Pau",
    "ciutat": "València"
  },
  "data_contracte": ISODate("2021-06-15T00:00:00Z"),
  "_id": ObjectId("60c72b2f9b1d8b3f4c8b4567"),
  "segon_nom": null,
  "imatge": BinData(0, "base64encodeddata"),
  "patró": /maria/i
}

Exemple 2: Consultes amb Diferents Tipus de Dades

Consulta per String

db.empleats.find({ "nom": "Maria" })

Consulta per Integer

db.empleats.find({ "edat": { $gt: 25 } })

Consulta per Boolean

db.empleats.find({ "actiu": true })

Consulta per Array

db.empleats.find({ "aficions": "viatges" })

Consulta per ObjectId

db.empleats.find({ "_id": ObjectId("60c72b2f9b1d8b3f4c8b4567") })

Exercicis Pràctics

Exercici 1: Crear un Document amb Diversos Tipus de Dades

Crea un document per a un estudiant amb els següents camps:

  • nom: "Pere"
  • edat: 22
  • actiu: true
  • nota_mitjana: 8.5
  • assignatures: ["matemàtiques", "física"]
  • adreça: { carrer: "Carrer de l'Universitat", ciutat: "Girona" }
  • data_matriculació: "2022-09-01T00:00:00Z"
  • _id: "60c72b2f9b1d8b3f4c8b4568"
  • segon_nom: null
  • foto: BinData(0, "base64encodeddata")
  • patró: /pere/i

Solució

{
  "nom": "Pere",
  "edat": 22,
  "actiu": true,
  "nota_mitjana": 8.5,
  "assignatures": ["matemàtiques", "física"],
  "adreça": {
    "carrer": "Carrer de l'Universitat",
    "ciutat": "Girona"
  },
  "data_matriculació": ISODate("2022-09-01T00:00:00Z"),
  "_id": ObjectId("60c72b2f9b1d8b3f4c8b4568"),
  "segon_nom": null,
  "foto": BinData(0, "base64encodeddata"),
  "patró": /pere/i
}

Exercici 2: Consulta per Tipus de Dades

Realitza les següents consultes:

  1. Troba tots els estudiants amb el nom "Pere".
  2. Troba tots els estudiants amb una edat superior a 20.
  3. Troba tots els estudiants que estan actius.
  4. Troba tots els estudiants que tenen "física" com a assignatura.

Solució

// 1. Troba tots els estudiants amb el nom "Pere".
db.estudiants.find({ "nom": "Pere" })

// 2. Troba tots els estudiants amb una edat superior a 20.
db.estudiants.find({ "edat": { $gt: 20 } })

// 3. Troba tots els estudiants que estan actius.
db.estudiants.find({ "actiu": true })

// 4. Troba tots els estudiants que tenen "física" com a assignatura.
db.estudiants.find({ "assignatures": "física" })

Conclusió

En aquest tema, hem explorat els diferents tipus de dades que MongoDB suporta i hem vist exemples pràctics de com utilitzar-los. Entendre aquests tipus de dades és fonamental per dissenyar esquemes eficients i per realitzar operacions CRUD de manera efectiva. En el proper tema, ens endinsarem en la creació d'índexs per optimitzar les consultes a MongoDB.

© Copyright 2024. Tots els drets reservats