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
- Descarrega i instal·la Node.js des del lloc oficial.
- Verifica la instal·lació executant:
node -v npm -v
Instal·lació de MongoDB
- Descarrega i instal·la MongoDB des del lloc oficial.
- Inicia el servei de MongoDB:
mongod
Configuració del Projecte
-
Crea una carpeta per al projecte i inicialitza un nou projecte Node.js:
mkdir mongodb-nodejs cd mongodb-nodejs npm init -y
-
Instal·la el client MongoDB per a Node.js:
npm install mongodb
Connexió a MongoDB
-
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);
-
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
- Crea un nou document amb informació d'un altre usuari.
- Llegeix tots els documents de la col·lecció i mostra'ls per consola.
- Actualitza un document canviant l'adreça d'un usuari existent.
- Elimina un document basat en un criteri específic.
Solucions
-
Crear un nou document:
await client.db("testdb").collection("testcollection").insertOne({ name: "Jane Doe", age: 28, address: "456 Elm St" });
-
Llegir tots els documents:
const cursor = await client.db("testdb").collection("testcollection").find(); const results = await cursor.toArray(); console.log(results);
-
Actualitzar un document:
await client.db("testdb").collection("testcollection").updateOne( { name: "Jane Doe" }, { $set: { address: "789 Oak St" } } );
-
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.
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