MongoDB Find: come individuare i documenti all’interno delle raccolte
Con l’aiuto dei comandi Find e Find One di MongoDB è possibile individuare tutti o alcuni documenti corrispondenti a precisi parametri di ricerca. Questi comandi possono essere eseguiti anche in Python o in Node.js.
Cos’è il comando Find di MongoDB e a che cosa serve?
Chi conosce MongoDB sa che questo sistema di gestione dei database funziona in modo leggermente diverso rispetto ai classici database relazionali, come ad esempio MySQL. Nonostante anche MongoDB sia in grado di generare database, esso non memorizza i dati in tabelle, bensì in documenti, raggruppati a loro volta nelle cosiddette raccolte. Si tratta quindi di capire come ricercare e visualizzare i dati necessari.
Il sistema dispone di due comandi MongoDB fondamentali: Find e Find One, i quali creano un cursore verso tutti o alcuni documenti che corrispondono ai parametri di ricerca definiti.
La sintassi del comando Find
Per capire il comando Find e il suo funzionamento occorre innanzitutto dare un’occhiata alla sintassi di base, la quale si presenta come segue:
db.collection.find
(
<query>,</query>
<projection></projection>
)
Accanto al comando vero e proprio, Find contiene pertanto anche due parametri, indicati tra le parentesi che lo seguono. <query> è un parametro filtro con il quale è possibile specificare la ricerca. Il secondo parametro <projection> è facoltativo e specifica quali aspetti di ciascun documento corrispondente debbano essere emessi.
Esempio di comando Find
Supponiamo, ad esempio, di avere un elenco di clienti in Italia che vogliamo consultare servendoci del comando Find di MongoDB. L’elenco si trova sotto forma di raccolta nel database “clienti”. Per ottenere un riepilogo di base di tutti i documenti, potete avvalervi del comando Find, omettendo <projection> e lasciando vuoto anche il parametro <query>. Il codice si presenta così:
>use clienti
switched to db clienti
>db.elenco_italia.find();
>
Il risultato è un elenco completo dei clienti in Italia, comprese tutte le informazioni che avete memorizzato. Ogni documento è sempre preceduto da un numero _id univoco, il quale aiuta il sistema a identificarlo con esattezza.
Esempio di comando Find con parametri
Sebbene l’output di tutti i documenti con l’aiuto di Find possa di per sé risultare molto comodo, il comando MongoDB acquisisce ulteriore utilità quando si desidera filtrare solo determinati documenti. Questo può essere fatto servendosi dei parametri menzionati. Immaginate che le seguenti informazioni siano memorizzate per ogni cliente e possano essere visualizzate in base alle esigenze:
"_id": ObjectID,
"name": "Iris Rossi"
"adress": "Via de Carolis 12"
"city": "Napoli"
Se ora dal vostro database contenente diverse centinaia di clienti provenienti da città diverse desiderate filtrare, ad esempio, solamente le persone che provengono da Torino, dovete procedere come segue:
Db.elenco_italia.find({"city": "Torino"})
Il sistema adesso filtrerà tutte le voci della raccolta “elenco_italia”, emettendo solo i risultati in cui Torino è memorizzata come città.
Esempio di comando Find One
Accanto all’opzione generale Find, grazie alla quale è possibile visualizzare tutti o solo alcuni documenti, il sistema dispone anche della funzione aggiuntiva Find One di MongoDB. Questa modalità consente di visualizzare un documento che corrisponde esattamente ai criteri definiti. Per prima cosa si seleziona il primo documento che compare sull’elenco. Qualora nessun documento corrisponda ai criteri di ricerca, verrà emesso come risultato “zero”. La sintassi di Find One si presenta simile a quella di Find:
db.collection.findOne
(
<query>,</query>
<projection></projection>
)
Anche qui, il parametro <query> stabilisce i criteri di ricerca mentre il parametro opzionale <projection> specifica quali campi del risultato sono visualizzati. Applicando il comando Find One all’esempio precedente, avremo un risultato simile al seguente:
>use clienti
switched to db clienti
>db.elenco_italia.findOne();
>
Il risultato sarà la prima voce del vostro elenco clienti in Italia.
Con Managed MongoDB from IONOS enables you to concentrate on the essentials. From installation to operation and maintenance work, IONOS makes sure you always get the best performance from your data banks.
Il comando MongoDB Find con Node.js e Python
Potete utilizzare MongoDB anche con Node.js o Python. In questo caso, il comando Find si presenta in modo leggermente diverso, ma la funzionalità di base rimane la stessa.
Il comando Find One in Python
Un popolare driver MongoDB per il lavoro con Python è PyMongo. Utilizzando questo driver, il comando Find One si presenterà ad esempio così:
import pymongo
myclient = pymongo.MongoClient ("mongodb://localhost:24137/")
mydb = myclient ["clienti"]
mycol = mydb ["elenco_italia"]
x = myco.find_one()
print ( x )
Il comando Find One con Node.js
Anche l’ambiente di runtime JavaScript Node.js può essere utilizzato in MongoDB. Per avviare il comando Find One, occorre eseguire il codice seguente:
var MongoClient = require ('mongodb').MongoClient;
var url = "mongodb://localhost:24137/";
MongoClient.connect (url, function (err, db) {
if (err) throw err;
var dbo = db.db ("mydb");
dbo.collection ("elenco_italia").findOne ( {}, function (err, result) {
if (err) throw err;
console-log (result.name);
db.close();
} );
} );
Desiderate organizzare i vostri documenti in MongoDB per ottenere una migliore visione d’insieme? Il comando MongoDB Sort vi permette di farlo in un batter d’occhio.