Salta el contingut
 

MongoDB

Joan Puigcerver Ib谩帽ez

j.puigcerveribanez@edu.gva.es

Llic猫ncia: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 馃叚

Introducci贸露

MongoDB 茅s un sistema de gesti贸 de bases de dades NoSQL popular i de codi obert. Est脿 dissenyat per emmagatzemar dades en un format flexible semblant a JSON anomenat BSON (Binary JSON), facilitant el treball amb dades en aplicacions modernes. MongoDB 茅s conegut per la seva escalabilitat, flexibilitat i rendiment, fet que el fa adequat per a una 脿mplia gamma d'usos, des de projectes de xicoteta escala fins a aplicacions empresarials de gran envergadura.

Conceptes Clau露

  • Base de dades de documents: MongoDB 茅s una base de dades orientada a documents, 茅s a dir, emmagatzema les dades en documents en lloc de taules.

  • Documents: Un document 茅s una unitat b脿sica d'emmagatzematge de dades a MongoDB. L'estructura dels documents 茅s similar a JSON. Cada document 茅s una col路lecci贸 de parells de claus-valor, on les claus s贸n cadenes de car脿cters i els valors poden ser de diversos tipus de dades.

  • Col路leccions: Les dades s'organitzen en col路leccions a MongoDB. Una col路lecci贸 茅s un grup de documents similars, que podria ser comparat amb una taula en una base de dades relacional. A difer猫ncia de les taules en una base de dades relacionals, els documents d'una col路lecci贸 no han de tindre l'estructura de dades id猫ntica.

Instal路laci贸露

Consell

Vos recomane seguir el tutorial Complete MongoDB Tutorial de Net Ninja, on explica pas a pas qu猫 茅s MongoDB, com instal路lar-lo i com utilitzar-lo.

Per instal路lar MongoDB, seguiu les instruccions de la p脿gina oficial de MongoDB. Treballarem amb la versi贸 7.0.9 de MongoDB.

脡s recomanable instal路lar MongoDB Compass, una interf铆cie gr脿fica d'usuari per a MongoDB que facilita la visualitzaci贸 i l'exploraci贸 de les dades a la base de dades.

Tamb茅 cal instal路lar MongoDB Shell, una eina de l铆nia de comandes per interactuar amb la base de dades MongoDB.

Per executar l'eina mongosh, obriu una terminal (com Powershell) i executeu la comanda mongosh.

PS C:\Users\joapuiib> mongosh
Current Mongosh Log ID: 662fc527889f41720f46b798
Connecting to:          mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.2.5
Using MongoDB:          7.0.9
Using Mongosh:          2.2.5

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

------
   The server generated these startup warnings when booting
   2024-04-29T16:10:28.259+02:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
------

test>

Comandes B脿siques露

Utilitzarem l'eina de l铆nia de comandes mongosh per interactuar amb la base de dades MongoDB.

A continuaci贸, es mostren algunes comandes b脿siques per comen莽ar.

Bases de dades露

MongoDB utilitza la comanda use per crear o utilitzar una base de dades. Si la base de dades no existeix, MongoDB la crear脿 autom脿ticament.

Informaci贸

Quan s'utilitza la comanda use, MongoDB no crea la base de dades fins que s'afegisquen dades a la base de dades.

use nom_base_de_dades

Exemple

Creem la base de dades llibres:

database> use llibres
switched to db llibres
llibres>

Per mostrar les bases de dades existents, utilitzeu la comanda show dbs.

show dbs

Per mostrar la base de dades actual, utilitzeu la comanda db.

db

Col路leccions露

Una col路lecci贸 茅s un grup de documents similars. A continuaci贸, es mostren algunes comandes b脿siques per treballar amb col路leccions:

Per crear una col路lecci贸, utilitzeu la comanda db.createCollection() amb el nom de la col路lecci贸 com a argument.

db.createCollection('nom_colleccio')

Bona pr脿ctica

Aix铆 com a SQL la convenci贸 de nomenclatura 茅s utilitzar el singular per al nom de les taules, en MongoDB es considera una bona pr脿ctica utilitzar el plural per al nom de la col路lecci贸.

Exemple

Creem la col路lecci贸 autors:

llibres> db.createCollection('autors')
{ "ok" : 1 }

Per mostrar les col路leccions existents, utilitzeu la comanda show collections.

show collections

Per eliminar una col路lecci贸, utilitzeu la comanda db.collection.drop() amb el nom de la col路lecci贸 com a argument.

Perill

Aquesta comanda eliminar脿 la col路lecci贸 i tots els documents que cont茅.

db.collection.drop()

Documents露

Un document 茅s una unitat b脿sica d'emmagatzematge de dades a MongoDB. Les dades s'emmagatzemen en documents en format BSON (Binary JSON) i s'estructuren en parells de clau-valor.

Inserci贸露

Per insertar un document a una col路lecci贸, utilitzeu la comanda db.collection.insertOne() amb les dades del document com a argument.

db.collection.insertOne({
    key1: value1,
    key2: value2,
    ...
})

Exemple

Afegim un document a la col路lecci贸 autors:

llibres> db.autor.insertOne({
"_id": 0,
"nom": "Irene Sol脿",
"data_naixement": new Date("1990-09-16"),
"nacionalitat": "Espanyola",
"biografia": "Irene Sol脿 (Malla, 1990) 茅s escriptora i traductora...",
"llibres": []
})
{
"acknowledged" : true,
"insertedId" : 0
}

Tots els documents de MongoDB tenen un camp _id que actua com a identificador 煤nic per al document dins de la col路lecci贸. Si no s'especifica un _id, MongoDB crear脿 un identificador 煤nic per al document.

Si voleu inserir m茅s d'un document a la vegada, utilitzeu la comanda db.collection.insertMany() amb una llista de documents com a argument.

db.collection.insertMany([
    { key1: value1, key2: value2, ... },
    { key1: value1, key2: value2, ... },
    ...
])

Consulta露

Per consultar els documents d'una col路lecci贸, utilitzeu la comanda db.collection.find().

> db.collection.find()

Exemple

Consultem els documents de la col路lecci贸 autors:

llibres> db.autors.find()
[
{
_id: 0,
nom: 'Irene Sol脿',
data_naixement: ISODate('1990-09-16T00:00:00.000Z'),
nacionalitat: 'Espanyola',
biografia: 'Irene Sol脿 (Malla, 1990) 茅s escriptora i traductora...',
llibres: []
}
]

Recursos addicionals露

馃搶 Aquest document pot quedar desactualitzat despr茅s d鈥檌mprimir-lo. Pots consultar la versi贸 m茅s recent a la p脿gina web.
馃尶 Abans d鈥檌mprimir aquest document, considera si 茅s realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.