En aquest tema, aprendrem com llegir documents de MongoDB utilitzant diverses tècniques i operacions. La lectura de documents és una de les operacions més comunes i essencials quan es treballa amb bases de dades. Ens centrarem en les operacions bàsiques de lectura, així com en algunes tècniques avançades per filtrar i projectar dades.
Continguts
Operació find
L'operació find
és la més utilitzada per llegir documents d'una col·lecció. Aquesta operació retorna tots els documents que compleixen els criteris especificats.
Exemple Bàsic
// Connexió a la base de dades const { MongoClient } = require('mongodb'); const uri = "mongodb://localhost:27017"; const client = new MongoClient(uri); async function run() { try { await client.connect(); const database = client.db('mydatabase'); const collection = database.collection('mycollection'); // Operació find sense filtres const cursor = collection.find({}); const results = await cursor.toArray(); console.log(results); } finally { await client.close(); } } run().catch(console.dir);
Explicació
- Connexió a la base de dades: Ens connectem a la base de dades
mydatabase
i a la col·lecciómycollection
. - Operació
find
: La funciófind({})
retorna tots els documents de la col·lecció. - Cursor:
find
retorna un cursor, que és un punter als resultats de la consulta. toArray
: Convertim el cursor a una matriu per poder treballar amb els resultats.
Filtratge de Documents
Podem especificar criteris de filtratge per retornar només els documents que compleixin certes condicions.
Exemple de Filtratge
// Filtratge per camp específic const cursor = collection.find({ age: { $gt: 25 } }); const results = await cursor.toArray(); console.log(results);
Explicació
- Filtratge:
{ age: { $gt: 25 } }
retorna tots els documents on el campage
és major que 25. - Operadors de Comparació: MongoDB proporciona diversos operadors de comparació com
$gt
(major que),$lt
(menor que),$gte
(major o igual que),$lte
(menor o igual que),$eq
(igual a), etc.
Projecció de Camps
La projecció ens permet especificar quins camps volem incloure o excloure dels documents retornats.
Exemple de Projecció
// Incloure només els camps 'name' i 'age' const cursor = collection.find({}, { projection: { name: 1, age: 1 } }); const results = await cursor.toArray(); console.log(results);
Explicació
- Projecció:
{ projection: { name: 1, age: 1 } }
inclou només els campsname
iage
en els documents retornats. - Incloure/Excloure Camps: Utilitzem
1
per incloure un camp i0
per excloure'l.
Ordenació de Resultats
Podem ordenar els resultats de la consulta utilitzant l'operació sort
.
Exemple d'Ordenació
// Ordenar per camp 'age' en ordre ascendent const cursor = collection.find().sort({ age: 1 }); const results = await cursor.toArray(); console.log(results);
Explicació
- Ordenació:
{ age: 1 }
ordena els resultats perage
en ordre ascendent. Utilitzem-1
per ordre descendent.
Limitació i Salt de Resultats
Podem limitar el nombre de documents retornats i saltar un nombre específic de documents.
Exemple de Limitació i Salt
// Limitar a 5 documents i saltar els primers 10 const cursor = collection.find().limit(5).skip(10); const results = await cursor.toArray(); console.log(results);
Explicació
- Limitació:
limit(5)
retorna només 5 documents. - Salt:
skip(10)
salta els primers 10 documents.
Exercicis Pràctics
Exercici 1: Filtratge i Projecció
- Filtra els documents on el camp
status
és "active". - Inclou només els camps
name
iemail
en els resultats.
const cursor = collection.find({ status: "active" }, { projection: { name: 1, email: 1 } }); const results = await cursor.toArray(); console.log(results);
Exercici 2: Ordenació i Limitació
- Ordena els documents per
createdAt
en ordre descendent. - Limita els resultats a 3 documents.
const cursor = collection.find().sort({ createdAt: -1 }).limit(3); const results = await cursor.toArray(); console.log(results);
Solucions
Solució Exercici 1
const cursor = collection.find({ status: "active" }, { projection: { name: 1, email: 1 } }); const results = await cursor.toArray(); console.log(results);
Solució Exercici 2
const cursor = collection.find().sort({ createdAt: -1 }).limit(3); const results = await cursor.toArray(); console.log(results);
Conclusió
En aquesta secció, hem après com llegir documents de MongoDB utilitzant l'operació find
, així com tècniques per filtrar, projectar, ordenar, limitar i saltar resultats. Aquestes operacions són fonamentals per treballar amb dades en MongoDB i ens permeten obtenir exactament la informació que necessitem de manera eficient. En el següent tema, explorarem com actualitzar documents a MongoDB.
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