Con l’aiuto dei comandi Find e Find One di MongoDB è possibile in­di­vi­dua­re tutti o alcuni documenti cor­ri­spon­den­ti 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 leg­ger­men­te diverso rispetto ai classici database re­la­zio­na­li, come ad esempio MySQL. No­no­stan­te anche MongoDB sia in grado di generare database, esso non memorizza i dati in tabelle, bensì in documenti, rag­grup­pa­ti a loro volta nelle co­sid­det­te raccolte. Si tratta quindi di capire come ricercare e vi­sua­liz­za­re i dati necessari.

Il sistema dispone di due comandi MongoDB fon­da­men­ta­li: Find e Find One, i quali creano un cursore verso tutti o alcuni documenti che cor­ri­spon­do­no ai parametri di ricerca definiti.

La sintassi del comando Find

Per capire il comando Find e il suo fun­zio­na­men­to occorre in­nan­zi­tut­to 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 spe­ci­fi­ca­re la ricerca. Il secondo parametro <pro­jec­tion> è fa­col­ta­ti­vo e specifica quali aspetti di ciascun documento cor­ri­spon­den­te debbano essere emessi.

Esempio di comando Find

Sup­po­nia­mo, ad esempio, di avere un elenco di clienti in Italia che vogliamo con­sul­ta­re ser­ven­do­ci 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 <pro­jec­tion> 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 in­for­ma­zio­ni che avete me­mo­riz­za­to. Ogni documento è sempre preceduto da un numero _id univoco, il quale aiuta il sistema a iden­ti­fi­car­lo 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 ac­qui­si­sce ulteriore utilità quando si desidera filtrare solo de­ter­mi­na­ti documenti. Questo può essere fatto ser­ven­do­si dei parametri men­zio­na­ti. Im­ma­gi­na­te che le seguenti in­for­ma­zio­ni siano me­mo­riz­za­te per ogni cliente e possano essere vi­sua­liz­za­te in base alle esigenze:

"_id": ObjectID,
"name": "Iris Rossi"
"adress": "Via de Carolis 12"
"city": "Napoli"

Se ora dal vostro database con­te­nen­te diverse centinaia di clienti pro­ve­nien­ti da città diverse de­si­de­ra­te filtrare, ad esempio, solamente le persone che pro­ven­go­no 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 è me­mo­riz­za­ta come città.

Esempio di comando Find One

Accanto all’opzione generale Find, grazie alla quale è possibile vi­sua­liz­za­re tutti o solo alcuni documenti, il sistema dispone anche della funzione ag­giun­ti­va Find One di MongoDB. Questa modalità consente di vi­sua­liz­za­re un documento che cor­ri­spon­de esat­ta­men­te ai criteri definiti. Per prima cosa si seleziona il primo documento che compare sull’elenco. Qualora nessun documento cor­ri­spon­da 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> sta­bi­li­sce i criteri di ricerca mentre il parametro opzionale <pro­jec­tion> specifica quali campi del risultato sono vi­sua­liz­za­ti. Ap­pli­can­do il comando Find One all’esempio pre­ce­den­te, 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.

Consiglio: MongoDB gestito da IONOS

Con Managed MongoDB from IONOS enables you to con­cen­tra­te on the es­sen­tials. From in­stal­la­tion to operation and main­te­nan­ce work, IONOS makes sure you always get the best per­for­man­ce from your data banks.

Il comando MongoDB Find con Node.js e Python

Potete uti­liz­za­re MongoDB anche con Node.js o Python. In questo caso, il comando Find si presenta in modo leg­ger­men­te diverso, ma la fun­zio­na­li­tà di base rimane la stessa.

Il comando Find One in Python

Un popolare driver MongoDB per il lavoro con Python è PyMongo. Uti­liz­zan­do questo driver, il comando Find One si pre­sen­te­rà 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 Ja­va­Script Node.js può essere uti­liz­za­to 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();
} );
} );
Consiglio

De­si­de­ra­te or­ga­niz­za­re 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.

Vai al menu prin­ci­pa­le