{
nome : 'ivan', chiave: valore
età: '43', chiave: valore
linguaggi: ['java', 'javascript'] chiave: valore
}
Tutti i documenti sono memorizzati in collezioni. Una collezione è un gruppo di documenti correlati che hanno un insieme di indici condivisi.
Spesso una collezione di mongodb viene considerata alla stregua di una tabella di una base dati relazionale: mi sembra una forzatura visto che i documenti presenti in una collezione non devono avere la stessa struttura.
In mongodb, le interrogazioni (query) vengono effettuate su delle collezioni; possono specificare dei criteri per filtrare i risultati e possono includere una proiezione per ottenere solo determinate coppie chiavi/valore dei documenti ricercati; si possono opzionalmente impostare limiti e criteri di ordinamenti.
Ecco un esempio di query che cerca nella collezione dipendenti quelli che sono maggiorenni e i risultati sono ordinati per cognome in maniera crescente.
Collezione Criterio Ordinamento
db.dipendenti.find({età: {$gt: 18}}).sort({cognome: 1})
In questo esempio, cerchiamo i primi 5 utenti, in ordine alfabetico per nome, che abbiano meno di 50 anni: di questi utenti ci interessa solo il nome e l'indirizzo: la query ritorna comunque la proprietà _id per ogni documento. Collezione Criterio Proiezione Ordinamento Limite
db.utenti.find({età: {$lt: 50}}, {nome: 1, indirizzo :1}).sort({nome:1}).limit(5)
Il metodo find torna sempre un cursore; se eseguito in una shell mongo e il risultato del metodo non viene assegnato ad una variabile, la shell itera i primi 20 risultati mostrandoli a video: un uso programmatico del cursore sarebbe il seguente, tenendo conto che nella shell mongo viene utilizzato un linguaggio di scripting quasi identico a javascript
var cursore = db.libri.find()
while(cursore.hasNext()) {
printjson(cursore.next())
}
//oppure
cursore.forEach(printjson)
Molto intuitivamente: finchè ci sono elementi nel cursore, viene stampanto il prossimo elemento puntato dal cursore stesso, la stampa avviene in formato json.Per aggiornare un documento esistente, la sintassi è la seguente
db.libri.update(
{
titolo: 'la guerra'
},
{
$set {
autore: 'Ancora non lo so'
}
}
)
Con questa istruzione aggiorniamo la proprietà autore del documento la cui proprietà titolo vale 'la guerra'; il metodo update aggiorna solo un documento alla volta, se vogliamo aggiornare più documenti dobbiamo aggiungere l'opzione {multi : true} come terzo parametro.Per eliminare un documento, la sintassi è la seguente
Rimuove il libro dal titolo 'la guerra' dalla collezione libri:
db.libri.remove({titolo: 'la guerra'})
Svuota la collezione libri:
db.libri.remove({})
Se volete utilizzare un client mongo più amichevole rispetto alla linea di comando, vi consiglio di scaricare e installare l'applicazione gratuita robomongo .All'avvio dell'applicazione, create una nuova connessione verso localhost come mostrato in figura
Il programma è molto intuitivo, non farete fatica ad utilizzarlo come si deve.
Bene, nel prossimo post, saremo pronti a mettere la nostra base dati online per essere accessibile dal mondo intero :)
Alla prox.
Ivan
Nessun commento:
Posta un commento