En aquest tema, aprendrem com utilitzar MongoDB amb JavaScript, específicament amb Node.js. Node.js és una plataforma popular per al desenvolupament de servidors i aplicacions web, i MongoDB és una base de dades NoSQL que s'integra molt bé amb Node.js gràcies a la seva estructura de documents JSON.

Continguts

Instal·lació de Node.js i MongoDB

Instal·lació de Node.js

  1. Descarrega i instal·la Node.js des del lloc oficial.
  2. Verifica la instal·lació executant:
    node -v
    npm -v
    

Instal·lació de MongoDB

  1. Descarrega i instal·la MongoDB des del lloc oficial.
  2. Inicia el servei de MongoDB:
    mongod
    

Configuració del Projecte

  1. Crea una carpeta per al projecte i inicialitza un nou projecte Node.js:

    mkdir mongodb-nodejs
    cd mongodb-nodejs
    npm init -y
    
  2. Instal·la el client MongoDB per a Node.js:

    npm install mongodb
    

Connexió a MongoDB

  1. Crea un fitxer index.js i afegeix el següent codi per connectar-te a MongoDB:

    const { MongoClient } = require('mongodb');
    
    async function main() {
        const uri = "mongodb://localhost:27017";
        const client = new MongoClient(uri);
    
        try {
            await client.connect();
            console.log("Connectat a MongoDB!");
        } catch (e) {
            console.error(e);
        } finally {
            await client.close();
        }
    }
    
    main().catch(console.error);
    
  2. Executa el fitxer per verificar la connexió:

    node index.js
    

Operacions CRUD

Creant Documents

async function createDocument(client) {
    const result = await client.db("testdb").collection("testcollection").insertOne({
        name: "John Doe",
        age: 30,
        address: "123 Main St"
    });
    console.log(`Nou document creat amb l'ID: ${result.insertedId}`);
}

Llegint Documents

async function readDocuments(client) {
    const cursor = await client.db("testdb").collection("testcollection").find();
    const results = await cursor.toArray();
    console.log("Documents trobats:");
    console.log(results);
}

Actualitzant Documents

async function updateDocument(client) {
    const result = await client.db("testdb").collection("testcollection").updateOne(
        { name: "John Doe" },
        { $set: { age: 31 } }
    );
    console.log(`${result.matchedCount} document(s) trobat(s), ${result.modifiedCount} document(s) actualitzat(s)`);
}

Eliminant Documents

async function deleteDocument(client) {
    const result = await client.db("testdb").collection("testcollection").deleteOne({ name: "John Doe" });
    console.log(`${result.deletedCount} document(s) eliminat(s)`);
}

Exemple complet

const { MongoClient } = require('mongodb');

async function main() {
    const uri = "mongodb://localhost:27017";
    const client = new MongoClient(uri);

    try {
        await client.connect();
        console.log("Connectat a MongoDB!");

        await createDocument(client);
        await readDocuments(client);
        await updateDocument(client);
        await readDocuments(client);
        await deleteDocument(client);
        await readDocuments(client);

    } catch (e) {
        console.error(e);
    } finally {
        await client.close();
    }
}

main().catch(console.error);

async function createDocument(client) {
    const result = await client.db("testdb").collection("testcollection").insertOne({
        name: "John Doe",
        age: 30,
        address: "123 Main St"
    });
    console.log(`Nou document creat amb l'ID: ${result.insertedId}`);
}

async function readDocuments(client) {
    const cursor = await client.db("testdb").collection("testcollection").find();
    const results = await cursor.toArray();
    console.log("Documents trobats:");
    console.log(results);
}

async function updateDocument(client) {
    const result = await client.db("testdb").collection("testcollection").updateOne(
        { name: "John Doe" },
        { $set: { age: 31 } }
    );
    console.log(`${result.matchedCount} document(s) trobat(s), ${result.modifiedCount} document(s) actualitzat(s)`);
}

async function deleteDocument(client) {
    const result = await client.db("testdb").collection("testcollection").deleteOne({ name: "John Doe" });
    console.log(`${result.deletedCount} document(s) eliminat(s)`);
}

Exercicis Pràctics

  1. Crea un nou document amb informació d'un altre usuari.
  2. Llegeix tots els documents de la col·lecció i mostra'ls per consola.
  3. Actualitza un document canviant l'adreça d'un usuari existent.
  4. Elimina un document basat en un criteri específic.

Solucions

  1. Crear un nou document:

    await client.db("testdb").collection("testcollection").insertOne({
        name: "Jane Doe",
        age: 28,
        address: "456 Elm St"
    });
    
  2. Llegir tots els documents:

    const cursor = await client.db("testdb").collection("testcollection").find();
    const results = await cursor.toArray();
    console.log(results);
    
  3. Actualitzar un document:

    await client.db("testdb").collection("testcollection").updateOne(
        { name: "Jane Doe" },
        { $set: { address: "789 Oak St" } }
    );
    
  4. Eliminar un document:

    await client.db("testdb").collection("testcollection").deleteOne({ name: "Jane Doe" });
    

Conclusió

En aquest tema, hem après com configurar un projecte Node.js per treballar amb MongoDB, com connectar-nos a una base de dades MongoDB i com realitzar operacions CRUD bàsiques. Aquestes habilitats són fonamentals per desenvolupar aplicacions web modernes que necessiten emmagatzemar i gestionar dades de manera eficient. En els següents mòduls, explorarem funcions més avançades i aplicacions del món real utilitzant MongoDB.

© Copyright 2024. Tots els drets reservats