MongoDB è un database NoSQL. Sotto NoSQL ombrello mettiamo tutti quei database che non usano il linguaggio SQL per interrogare i dati.
Caratteristiche chiave di MongoDB
MongoDB è un database molto compatibile con JavaScript. Espone un'API JavaScript che possiamo utilizzare per creare database e raccolte di oggetti (chiamati documenti ).
È senza schema , il che significa che non è necessario predefinire una struttura per i dati prima di archiviarli.
In MongoDB puoi archiviare qualsiasi oggetto senza doversi preoccupare dei campi particolari che compongono questo oggetto e di come memorizzarli. Dici a MongoDB di archiviare quell'oggetto.
I dati vengono archiviati in un formato simile a JSON, ma migliorato per consentire l'archiviazione di più di semplici tipi di dati di base.
Installazione
Andiamo avanti e installiamo MongoDB. Potresti utilizzare uno dei tanti provider cloud che offrono l'accesso a un'istanza MongoDB, ma per motivi di apprendimento, lo installeremo noi stessi.
Uso un Mac, quindi le istruzioni di installazione in questo tutorial fanno riferimento a quel sistema operativo.
Apri il terminale ed esegui:
brew tap mongodb/brew
brew install mongodb-community
Questo è tutto.
Le istruzioni non erano troppo lunghe o complicate, ammesso che tu sappia come usare il terminale e come installare Homebrew.
L'installazione ci dice questo:
To have launchd start mongodb now and restart at login:
brew services start mongodb-community
Or, if you don't want/need a background service you can just run:
mongod --config /usr/local/etc/mongod.conf
Puoi scegliere di avviare MongoDB una volta e farlo funzionare per sempre come servizio in background nel tuo computer (la cosa che preferisco), oppure puoi eseguirlo solo quando ne hai bisogno, eseguendo quest'ultimo comando.
La configurazione predefinita per MongoDB è questa:
systemLog:
destination: file
path: /usr/local/var/log/mongodb/mongo.log
logAppend: true
storage:
dbPath: /usr/local/var/mongodb
net:
bindIp: 127.0.0.1
I log sono archiviati in /usr/local/var/log/mongodb/mongo.log
e il database è archiviato in /usr/local/var/mongodb
.
Per impostazione predefinita non c'è controllo di accesso, chiunque può leggere e scrivere nel database.
La conchiglia Mongo
Il modo migliore per sperimentare MongoDB e iniziare a interagire con esso è eseguire mongo
programma, che avvia la shell MongoDB.
Ora puoi inserire qualsiasi comando compreso da Mongo.
Crea un database
Quando inizi, Mongo crea un database chiamato test
. Esegui db
nella shell per dirti il nome del database attivo
Per modificare il database, scrivi use newname
e il newname
il database verrà creato istantaneamente e la shell passerà a utilizzarlo.
Usa show databases
per elencare i database disponibili:
Come puoi vedere, il something
il database non è elencato, solo perché non è ancora presente alcuna raccolta. Creiamone uno.
Raccolte
In MongoDB, una raccolta è l'equivalente di una tabella di database SQL.
Puoi creare una raccolta nel database corrente utilizzando db.createCollection()
comando. Il primo argomento è il nome del database e puoi passare un oggetto opzioni come secondo parametro.
Dopo averlo fatto, show databases
elencherà il nuovo database e show collections
elencherà la collezione.
Puoi anche creare una nuova collezione usandola come proprietà del db
oggetto e chiamando insert()
per aggiungere un oggetto alla collezione:
db.dogs.insert({ name: 'Roger' })
Elencare gli oggetti in una raccolta
Per mostrare gli oggetti aggiunti a una raccolta, usa find()
metodo:
Come puoi vedere c'è un ulteriore _id
proprietà per il record che abbiamo aggiunto. Questo viene generato automaticamente per noi da MongoDB.
Ora aggiungi altri cani:
db.dogs.insert({ name: 'Buck' })
db.dogs.insert({ name: 'Togo' })
db.dogs.insert({ name: 'Balto' })
Chiamando db.dogs.find()
ci fornirà tutte le voci, mentre possiamo passare un parametro per filtrare e recuperare una voce specifica, ad esempio con db.dogs.find({name: 'Roger'})
:
Il find()
restituisce un cursore su cui devi scorrere.
C'è un altro metodo che è utile quando sai che otterrai un solo record, che è findOne()
, ed è usato allo stesso modo. Se più record corrispondono a una query, verrà restituito solo il primo.
Aggiornamento dei record
Per aggiornare un record puoi usare update()
metodo su una raccolta:
Rimozione di record
Puoi rimuovere un record chiamando remove()
metodo su una raccolta, passando un oggetto per aiutarlo a identificarlo:
Per rimuovere tutte le voci da una raccolta, passa un oggetto vuoto:
db.dogs.remove({})