MongoDB è un database non relazionale (NoSQL) in cui gli oggetti che vengono storicizzati sono chiamati documenti e, per questo motivo, si parla anche di database orientato ai documenti. I documenti sono strutture dati composte da una serie di coppie chiave-valore che rappresentano gli attributi o campi del documento ed i loro valori. I valori dei campi dei documenti possono essere di un tipo base, come numeri, stringhe, booleani, oppure essere a loro volta un documento o un array.
Il formato in cui vengono rappresentati i documenti è molto simile al JSON (JavaScript Simple Object Notation). Ad esempio, un documento relativo ad una struttura che rappresenta una persona, potrebbe essere fatto in questo modo:
{ nome: "Davis" cognome: "Molinari" eta: 32 interessi: ["programmazione", "musica", "running"] }
I documenti in MongDB sono raggruppati in quelle che vengono chiamate collezioni. Approfondiremo il discorso su questi oggetti più avanti, ora vediamo prima come installare MongoDB.
Andiamo alla pagina di download e scarichiamo l’ultima versione stabile per il sistema operativo su cui stiamo lavorando. In questo caso siamo su OS X e, al momento della scrittura dell’articolo, l’ultima release stabile è la 3.0.3.
Clicchiamo su “Download” per scaricare l’archivio tgz e, una volta downloadato, lo scompattiamo con il comando:
tar -zxvf mongodb-osx-x86_64-3.0.3.tgz
Nell’immagine seguente possiamo vedere il risultato dell’operazione (in questo caso Safari, durante il download, esegue l’ungzip “esterno” per cui il fie scaricato è un .tar e non un .tgz e quindi l’opzione -z del comando tar non è necessaria)
Nella cartella /bin vediamo l’elenco dei programmi disponibili. Quelli principali su cui ci concentriamo per ora sono:
- mongod: è il server MongoDB
- mongo: è la MongoDB Shell con cui connettersi al server ed impartire comandi
Di default MongoDB salva i dati al path /data/db. Tale path, se non esiste, deve essere creato e gli devono essere settati i permessi in lettura e scrittura. Se viene lanciato il server MongoDB, eseguendo dalla cartella /bin il comando ./mongod, e le cartelle indicate non sono state create otteniamo il seguente errore:
I STORAGE [initandlisten] exception in initAndListen: 29 Data directory /data/db not found., terminating
Creiamo quindi a questo punto la cartella /data/db a diamo tutti i permessi su di essa. Per farlo dobbiamo essere superuser ed eseguire i seguenti comandi, come illustrato nella figura successiva:
mkdir -p /data/db chmod 777 /data chmod 777 /data/db
Una volta create le directories necessarie per il salvataggio dei dati, possiamo provare nuovamente ad eseguire il server MongoDB e, se tutto è andato a buon fine, otteniamo un messaggio simile a quello in figura:
Come possiamo vedere dalla parte di messaggio evidenziata in figura
I CONTROL [initandlisten] MongoDB starting : pid=2791 port=27017 dbpath=/data/db 64 bit
MongoDB utilizza come porta di default la 27017.
Una volta che abbiamo il nostro server MongoDB running, possiamo aprire un altro terminale dal quale lanciare la Mongo Shell per connetterci al database. Per farlo dobbiamo lanciare, dalla cartella /bin, il comando mongo. L’immagine seguente ci mostra i due terminali, uno con la mongo shell in esecuzione ed il prompt “>” pronto a ricevere i comandi e l’altro con il server MongoDB in esecuzione che mostra il messaggio di avvenuta ricezione di una connessione da shell.
Prima di procedere, copiamo tutti i comandi della cartella /bin di MongoDB sotto al path /usr/local/bin in modo che siano eseguibili direttamente da ogni posizione, senza la necessità di fornire il path relativo.
cd mongodb-osx-x86_64-3.0.3 cd bin sudo cp * /usr/local/bin
Ora che abbiamo il server MongoDB in esecuzione e che siamo riusciti a connetterci con la mongo shell, eseguiamo un’operazione di inserimento di un documento in una collection che chiamiamo “utenti” e che, se non esiste, viene creata.
Per farlo eseguiamo, come illustato nella figura seguente, il comando:
db.utenti.insert( {"first_name":"Davis","last_name":"Molinari"} )
Nel prossimo articolo ripartiremo da qua ed approfondiremo il discorso sulle collections e su come manipolarle eseguendo la classiche operazioni CRUD (Create, Read, Update, Delete).
Serie interessante :)
Il problema è che sto iniziando troppe serie diverse e poi finisce che non ne porto avanti nessuna.. :)
Pingback: Creare una web application con Spring Boot, MongoDB, Angular 4 e TypeScript e deployarla in cloud come Microsoft Azure Webapp – Parte 8 | Dede Blog