Introduzione a MongoDB, parte 1: installazione server e connessione dalla mongo shell

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.
MongoDB download page

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)
MongoDB installation tar command

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

MongoDB default path /data/db

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

MongoDB create path /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:
MongoDB server running

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.
MongoDB mongo shell running

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"} )

MongoDB collection insert

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

3 thoughts on “Introduzione a MongoDB, parte 1: installazione server e connessione dalla mongo shell

    • Il problema è che sto iniziando troppe serie diverse e poi finisce che non ne porto avanti nessuna.. :)

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

Leave a Reply to unnikked Cancel reply

Your email address will not be published. Required fields are marked *