Els documents encaixats són una característica poderosa de MongoDB que permet emmagatzemar documents dins d'altres documents. Aquesta capacitat és útil per representar relacions jeràrquiques i estructures de dades complexes de manera natural i eficient.
Conceptes Clau
Què són els Documents Encaixats?
Els documents encaixats són documents que es troben dins d'altres documents. En lloc de tenir una relació entre dues col·leccions separades, podem emmagatzemar la informació relacionada dins d'un sol document.
Avantatges dels Documents Encaixats
- Consulta Eficient: Redueix la necessitat de fer múltiples consultes per obtenir dades relacionades.
- Atomicitat: Les operacions en un document encaixat són atòmiques, el que significa que es garanteix la consistència de les dades.
- Simplicitat: Simplifica el model de dades i el codi de l'aplicació.
Desavantatges dels Documents Encaixats
- Limitació de Mida: Els documents en MongoDB tenen una mida màxima de 16 MB.
- Actualitzacions Complexes: Les actualitzacions en documents molt grans poden ser més complicades i menys eficients.
Exemples Pràctics
Exemple 1: Emmagatzemar Adreces dins d'un Document d'Usuari
{ "nom": "Joan", "cognom": "Pérez", "adreces": [ { "tipus": "casa", "carrer": "Carrer Major, 123", "ciutat": "Barcelona", "codi_postal": "08001" }, { "tipus": "treball", "carrer": "Carrer de l'Empresa, 456", "ciutat": "Barcelona", "codi_postal": "08002" } ] }
Exemple 2: Emmagatzemar Comentaris dins d'un Document de Blog
{ "títol": "Introducció a MongoDB", "autor": "Maria", "contingut": "MongoDB és una base de dades NoSQL...", "comentaris": [ { "autor": "Pere", "contingut": "Gran article!", "data": "2023-10-01" }, { "autor": "Anna", "contingut": "Molt útil, gràcies!", "data": "2023-10-02" } ] }
Operacions amb Documents Encaixats
Inserir Documents Encaixats
db.usuaris.insertOne({ nom: "Joan", cognom: "Pérez", adreces: [ { tipus: "casa", carrer: "Carrer Major, 123", ciutat: "Barcelona", codi_postal: "08001" }, { tipus: "treball", carrer: "Carrer de l'Empresa, 456", ciutat: "Barcelona", codi_postal: "08002" } ] });
Consultar Documents Encaixats
Actualitzar Documents Encaixats
db.usuaris.updateOne( { nom: "Joan" }, { $set: { "adreces.$[elem].carrer": "Carrer Nou, 789" } }, { arrayFilters: [ { "elem.tipus": "casa" } ] } );
Eliminar Documents Encaixats
Exercicis Pràctics
Exercici 1: Crear un Document amb Documents Encaixats
Crea un document per a un producte que contingui informació sobre les seves variants (color, mida, preu).
Exercici 2: Consultar Documents Encaixats
Consulta tots els usuaris que tenen una adreça a "Barcelona".
Exercici 3: Actualitzar Documents Encaixats
Actualitza el carrer de l'adreça de casa de l'usuari "Joan" a "Carrer Nou, 789".
Exercici 4: Eliminar Documents Encaixats
Elimina l'adreça de treball de l'usuari "Joan".
Solucions
Solució a l'Exercici 1
db.productes.insertOne({ nom: "Samarreta", variants: [ { color: "vermell", mida: "M", preu: 19.99 }, { color: "blau", mida: "L", preu: 21.99 } ] });
Solució a l'Exercici 2
Solució a l'Exercici 3
db.usuaris.updateOne( { nom: "Joan" }, { $set: { "adreces.$[elem].carrer": "Carrer Nou, 789" } }, { arrayFilters: [ { "elem.tipus": "casa" } ] } );
Solució a l'Exercici 4
Conclusió
Els documents encaixats són una eina poderosa en MongoDB que permeten emmagatzemar dades relacionades de manera eficient i natural. Tot i que tenen alguns desavantatges, els seus beneficis en termes de consulta eficient i atomicitat sovint superen les limitacions. Amb la pràctica, podràs dissenyar esquemes de dades que aprofitin al màxim aquesta característica.
Curs de MongoDB
Mòdul 1: Introducció a MongoDB
Mòdul 2: Operacions CRUD a MongoDB
Mòdul 3: Modelatge de Dades a MongoDB
Mòdul 4: Indexació i Agregació
Mòdul 5: Funcions Avançades de MongoDB
Mòdul 6: Rendiment i Seguretat
- Optimització del Rendiment
- Còpia de Seguretat i Restauració
- Millors Pràctiques de Seguretat
- Monitorització i Alertes