Learning Center
Database MongoDB

Come usare MongoDB Shell

23 ott 2025
Minhal Abbas
Minhal Abbas

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 --dearmor

Aggiungi 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.list

Aggiorna l’elenco dei pacchetti:

sudo apt update

Installa MongoDB:

sudo apt install mongodb-org -y

Image4

Dopo l’installazione, verifica la versione installata:

mongod --version

Image6

Una volta completata l’installazione, abilita, avvia e controlla il servizio:

sudo systemctl enable mongod
sudo systemctl start mongod
sudo systemctl status mongod

Image5

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

Image7

La seguente sintassi viene utilizzata per connettersi a un server remoto:

mongodb+srv://<nome_utente>:<password>@<indirizzo_cluster>/<database>?retryWrites=true&w=majority

Sostituisci <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:

Image7

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

Image10

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

Image9

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

Image11

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'})

Image1

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'}
])

Image8

Visualizzare le collezioni
Copia link

Dopo l’inserimento, visualizza le collezioni esistenti:

show collections

Image14

Se non desideri eseguire altre operazioni, esci dall’interfaccia digitando:

exit

Image12

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" })

Image13

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

Image15

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 } })

Image16

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" })

Image17

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 } }
])

Image18

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

Image3

  • In questo esempio, la funzione mapFunction emette l’età come chiave e lo stipendio come valore.

  • La funzione reduceFunction somma 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:

Image22

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 }) 

Image19

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 }) 

Image20

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) 

Image21

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) 

Image23

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

Image2

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.