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 camp age é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 camps name i age en els documents retornats.
  • Incloure/Excloure Camps: Utilitzem 1 per incloure un camp i 0 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 per age 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ó

  1. Filtra els documents on el camp status és "active".
  2. Inclou només els camps name i email 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ó

  1. Ordena els documents per createdAt en ordre descendent.
  2. 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.

© Copyright 2024. Tots els drets reservats