Come usare MongoDB Shell
MongoDB Shell è un ambiente REPL (Read-Eval-Print Loop) adattivo basato su JavaScript e Node.js per lavorare con le implementazioni MongoDB. È uno strumento fondamentale per interrogare i dati, amministrare i database ed eseguire diverse operazioni. Offre un’interfaccia intuitiva per gestire i database, sia in remoto che in locale.
Questo articolo illustra passo dopo passo come utilizzare la MongoDB Shell.
Passaggio 1: Installazione della MongoDB Shell Copia link
Prima di iniziare, assicurati che la Shell sia installata sul sistema. In caso contrario, scarica la versione appropriata dal sito ufficiale e segui le istruzioni di installazione per il tuo sistema operativo.
Windows Copia link
Visita la pagina ufficiale, seleziona la versione Windows e avvia il download.
macOS Copia link
Nella pagina ufficiale, scegli la versione per macOS e avvia il download. In alternativa, puoi usare Homebrew eseguendo i seguenti comandi:
brew tap mongodb/brew
brew install mongosh
Linux Copia link
Consulta le istruzioni fornite sul sito per il sistema operativo Linux. Ad esempio, su un sistema basato su Debian, segui questi passaggi:
Aggiungi la chiave GPG per il repository MongoDB:
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmorAggiungi il repository MongoDB al tuo sistema:
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.listAggiorna l’elenco dei pacchetti:
sudo apt updateInstalla MongoDB:
sudo apt install mongodb-org -y
Dopo l’installazione, verifica la versione installata:
mongod --version
Una volta completata l’installazione, abilita, avvia e controlla il servizio:
sudo systemctl enable mongod
sudo systemctl start mongod
sudo systemctl status mongod

Se cerchi una soluzione affidabile, ad alte prestazioni e conveniente per i tuoi flussi di lavoro, Hostman offre opzioni di hosting VPS Linux, tra cui Debian VPS, Ubuntu VPS e VPS CentOS.
Passaggio 2: Connessione a un’istanza Copia link
Dopo l’installazione, puoi stabilire una connessione a un’istanza. Se è locale, digita mongosh. Per impostazione predefinita, si connette all’istanza in esecuzione sulla porta 27017 su localhost:
Once the installation is done, you can establish connections to its instance. If it is local, enter mongosh. It establishes the connection to the instance by default. It is running at port 27017 on localhost:
mongosh
La seguente sintassi viene utilizzata per connettersi a un server remoto:
mongodb+srv://<nome_utente>:<password>@<indirizzo_cluster>/<database>?retryWrites=true&w=majoritySostituisci <nome_utente>, <password>, <indirizzo_cluster> e <database> con le credenziali e i dettagli di connessione reali.
Passaggio 3: Navigazione nel terminale Copia link
Una volta connesso, puoi lavorare con i database. Prima di procedere, l’interfaccia mostra un messaggio di benvenuto:

Operazioni utili sono elencate di seguito:
Visualizzare tutti i database Copia link
Esegui show dbs per ottenere un elenco di tutti i database disponibili:
show dbs
Visualizzare il database corrente Copia link
La maggior parte dei comandi opera su un database o una raccolta contenuta al suo interno. L’oggetto db rappresenta il database attualmente selezionato:
db
Cambiare database Copia link
Digita il comando use seguito dal nome del database, ad esempio new_db, per crearlo o passare a esso:
use new_db
Sostituisci new_db con il nome reale del database.
Inserire un oggetto Copia link
Per prima cosa, inserisci un oggetto con un nome in student_data all’interno del database new_db esistente:
db.student_data.insertOne({name: 'School has 500 students'})
Puoi anche inserire più documenti in student_data, ciascuno con un campo name contenente valori specifici. Questo consente l’inserimento in batch dei dati nella raccolta:
db.student_data.insertMany([
{name: 'School has 500 students'},
{name: 'School has 600 students'}
])

Visualizzare le collezioni Copia link
Dopo l’inserimento, visualizza le collezioni esistenti:
show collections
Se non desideri eseguire altre operazioni, esci dall’interfaccia digitando:
exit
Hai ora compreso le operazioni di base della Shell.
Passaggio 4: Operazioni CRUD Copia link
Quando si lavora con la Shell, le operazioni CRUD (Create, Read, Update, Delete) sono fondamentali. Eseguiamo alcune operazioni di base:
Creare/Inserire dati Copia link
Quando inserisci nuove informazioni in una raccolta, utilizza la funzione insertOne. Creiamo una nuova raccolta e la popoliamo con le informazioni necessarie, inclusi name (nome), age (età) e city (città):
db.collection.insertOne({ name: "Harry", age: 45, city: "Sydney" })
Trovare/Leggere dati Copia link
Puoi interrogare i documenti associati alla raccolta usando la funzione find. Ad esempio, vengono recuperate tutte le voci con un’età superiore a 25:
db.collection.find({ age: { $gt: 25 } }) // Condizione in cui l’età è maggiore di 25
Modificare dati Copia link
Usa le funzioni updateOne o updateMany per modificare i documenti esistenti. Ad esempio, l’età di Harry viene aggiornata a 50:
db.collection.updateOne({ name: "Harry" }, { $set: { age: 50 } })
Eliminare dati Copia link
Usa i metodi deleteOne o deleteMany per rimuovere voci dalla raccolta. Questo comando elimina un documento con il valore John nel campo name:
db.collection.deleteOne({ name: "John" })
Passaggio 5: Utilizzo avanzato Copia link
In questo passaggio, esegui operazioni complesse tramite funzionalità avanzate. Grazie agli strumenti di debug, profilazione e ottimizzazione delle prestazioni, la Shell aiuta a identificare i colli di bottiglia e migliorare la configurazione.
Pipeline di aggregazione Copia link
Con le pipeline è possibile elaborare record e ottenere risultati aggregati. Le pipeline consentono di creare analisi e trasformazioni complesse per estrarre informazioni preziose dai dati grezzi. Per eseguire una pipeline di fasi, utilizza la funzione aggregate. Ecco un esempio:
db.collection.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$city", total: { $sum: "$amount" } } },
{ $sort: { total: -1 } }
])

In questo script, la pipeline filtra i documenti con stato A, li raggruppa per city, somma gli importi e ordina i risultati in ordine decrescente.
La pipeline di aggregazione è uno strumento potente per l’analisi e la trasformazione dei dati. È composta da più fasi, ognuna delle quali modifica il flusso di documenti. Queste fasi includono:
$project: seleziona o esclude campi specifici.
$match: applica una condizione di query per filtrare i documenti.
$group: raggruppa i dati per un campo e calcola aggregazioni.
$sort: ordina i risultati in base a un campo specifico.
$limit: limita il numero di record.
$skip: salta un numero definito di record.
MapReduce Copia link
Un paradigma efficace per elaborare grandi set di dati. Per eseguire attività MapReduce, utilizza il comando mapReduce:
// Dati di esempio
db.collection.insertMany([
{ name: "Harry", age: 25, salary: 5000 },
{ name: "Buttler", age: 30, salary: 6000 },
{ name: "Morgan", age: 35, salary: 7000 }
]);
// Funzione Map
var mapFunction = function() {
emit(this.age, this.salary);
};
// Funzione Reduce
var reduceFunction = function(keyAge, valuesSalaries) {
return Array.sum(valuesSalaries);
};
// Esegui MapReduce
db.runCommand({
mapreduce: "collection",
map: mapFunction,
reduce: reduceFunction,
out: "results"
});
db.results.find().forEach(printjson); // Mostra i risultati

-
In questo esempio, la funzione
mapFunctionemette l’età come chiave e lo stipendio come valore. -
La funzione
reduceFunctionsomma gli stipendi per ogni gruppo di età. -
I risultati vengono salvati in una nuova raccolta chiamata results, e l’output finale viene mostrato con
db.results.find().forEach(printjson).
Il risultato è mostrato di seguito:

Proiezione Copia link
Utilizza l’operatore di proiezione per specificare quali campi includere o escludere nei risultati. Recupera tutte le informazioni associate a una query, ad esempio mostrando solo i campi name e age. Questo ti consente di visualizzare risultati specifici ed escluderne altri. Proiettiamo solo i campi name e age:
db.collection.find({}, { name: 1, age: 1 }) 
Ordinamento Copia link
Ordina i risultati utilizzando la funzione sort. Recupera tutti i documenti del set e li ordina in ordine decrescente in base all’età, mostrando per primi i valori più alti. Ordiniamo per età in ordine decrescente:
db.collection.find().sort({ age: -1 }) 
Limitare Copia link
Gli utenti possono limitare il numero di risultati con la funzione limit. Ad esempio, ottieni i primi tre documenti della raccolta. È utile per visualizzare un piccolo sottoinsieme di dati senza recuperare l’intero elenco. Limitiamo i risultati a 3:
db.collection.find().limit(3) 
Saltare Copia link
Puoi saltare delle voci utilizzando la funzione skip. Ad esempio, saltare i primi due documenti della raccolta. È utile per la paginazione o per ignorare i primi record. Saltiamo i primi 2 risultati:
db.collection.find().skip(2) 
Passaggio 6: Creazione di script con Shell Copia link
Gli utenti possono scrivere script per automatizzare le attività all’interno della Shell. Per farlo, salva lo script in un file .js ed eseguilo con mongosh. È utile per eseguire attività ripetitive in modo efficiente, come il popolamento dei dati o gli aggiornamenti batch:
mongosh script.js
Padroneggiando i comandi di MongoDB, puoi ottenere preziose informazioni dai tuoi dati.
Conclusione Copia link
Con l’interfaccia interattiva di MongoDB Shell puoi eseguire attività amministrative ricorrenti come scrittura, lettura e modifica. Inoltre, puoi interrogare raccolte esistenti, aggiungere nuovi oggetti al database ed eseguire attività di gestione. Dalle semplici operazioni CRUD alle aggregazioni e agli script complessi, gli utenti possono utilizzare l’interfaccia per eseguire una vasta gamma di operazioni.
Eseguendo script, gli utenti possono automatizzare in modo efficiente attività ripetitive. Questo tutorial ha trattato l’installazione, la configurazione e la gestione di database, raccolte e utenti.