MongoDB Sort: come impostare l’ordine di output dei dati
MongoDB Sort consente di ordinare i documenti in base a specifici parametri. L’output può essere in ordine crescente o decrescente.
Cos’è Sort in MongoDB?
Nel sistema di gestione di database MongoDB, i dati vengono memorizzati sotto forma di documenti all’interno di database che possono essere creati per mezzo del comando Create Database di MongoDB. Per avere una migliore visione d’insieme e dare un ordine logico ai documenti, è possibile organizzare i file in raccolte e indicizzarli. Lo scopo di questo sistema, infatti, non è solo quello di memorizzare i dati, ma anche di renderli disponibili in qualsiasi momento.
Inoltre, per ottimizzare l’output, il sistema mette a disposizione MongoDB Sort, un metodo che serve a impostare l’ordine di visualizzazione dei documenti rendendo gli elenchi e le query ancora più veloci ed efficaci.
Nel nostro articolo di approfondimento potete trovare un riepilogo dei comandi MongoDB.
Sintassi e funzionalità di MongoDB Sort
Assieme a MongoDB Find, MongoDB Sort rappresenta un altro metodo che risulta spesso utile quando si lavora con il database. Le due funzioni possono anche essere combinate tra loro. In questo caso, la sintassi di base è la seguente:
db.collection_name.find().sort({field_name: sort_order})
In aggiunta al comando MongoDB Sort vero e proprio, il quale deve contenere il nome della raccolta, esiste un altro parametro. Si tratta di un documento che determina il criterio con cui il sistema deve ordinare i documenti. Inoltre, è possibile stabilire la direzione della classificazione mediante il parametro sort_order: il valore 1 corrisponde a un ordine crescente, mentre -1 significa che l’ordine è decrescente. In assenza di questo valore, MongoDB Sort emetterà automaticamente i documenti in ordine crescente.
Esempi di MongoDB Sort
Per poter spiegare meglio come funziona MongoDB Sort e i suoi vari campi di applicazione, possiamo utilizzare alcuni semplici esempi. Per una migliore visione d’insieme e che includa informazioni relative al nome dell’acquirente e al numero di ordini, ipotizziamo un elenco di clienti che abbia soltanto tre voci. L’elenco si presenta così, privo di ordine:
>db.elencoclienti.find()
{ _id : ObjectID ( "409f288c184f9132cd772c1" ), "name" : "Isaia", "purchases" : 2 },
{ _id : ObjectID ( "409f288c184f9132cd772c2" ), "name" : "Torre", "purchases" : 1 },
{ _id : ObjectID ( "409f288c184f9132cd772c3" ), "name" : "Bellini", "purchases" : 4 }
>
Classificazione per nome
Per ordinare l’elenco in ordine alfabetico, si può usare MongoDB Sort. Nel nostro esempio, il risultato è questo:
>db.elencoclienti.find().sort({name : 1})
{ _id : ObjectID ( "409f288c184f9132cd772c3" ), "name" : "Bellini", "purchases" : 4 },
{ _id : ObjectID ( "409f288c184f9132cd772c1" ), "name" : "Isaia", "purchases" : 2 },
{ _id : ObjectID ( "409f288c184f9132cd772c2" ), "name" : "Torre", "purchases" : 1 }
>
Per visualizzare i nomi in ordine decrescente, occorre ricorrere a MongoDB Sort nel modo seguente:
>db.elencoclienti.find().sort({name : -1})
{ _id : ObjectID ( "409f288c184f9132cd772c2" ), "name" : "Torre", "purchases" : 1 },
{ _id : ObjectID ( "409f288c184f9132cd772c1" ), "name" : "Isaia", "purchases" : 2 },
{ _id : ObjectID ( "409f288c184f9132cd772c3" ), "name" : "Bellini", "purchases" : 4 }
>
Classificazione per ordine
Se si desidera ordinare i clienti in base alla frequenza degli ordini, partendo da chi ha effettuato il maggior numero di acquisti, il comando MongoDB Sort si presenterà così:
>db.elencoclienti.find().sort({purchases : -1})
{ _id : ObjectID ( "409f288c184f9132cd772c3" ), "name" : "Bellini", "purchases" : 4 },
{ _id : ObjectID ( "409f288c184f9132cd772c1" ), "name" : "Isaia", "purchases" : 2 },
{ _id : ObjectID ( "409f288c184f9132cd772c2" ), "name" : "Torre", "purchases" : 1 }
>