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.jsi 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
