MongoDB Shell is een aanpasbare JavaScript- en Node.js-REPL-omgeving (Read-Eval-Print Loop) voor het werken met MongoDB-implementaties. Het is een essentieel hulpmiddel voor het uitvoeren van query’s, beheren van databases en uitvoeren van verschillende bewerkingen. Het biedt een gebruiksvriendelijke interface voor databasebeheer, zowel lokaal als op een externe server.
Dit artikel laat stap voor stap zien hoe je MongoDB Shell kunt gebruiken.
Voordat je begint, controleer of MongoDB Shell op het systeem is geïnstalleerd. Zo niet, download dan de juiste versie van de officiële website en volg de installatie-instructies voor jouw besturingssysteem.
Bezoek de officiële pagina, kies de Windows-versie en start de download.
Op de officiële pagina kies je de macOS-versie en start je de download. Je kunt ook Homebrew gebruiken door de volgende opdrachten uit te voeren:
brew tap mongodb/brew
brew install mongosh
Raadpleeg de richtlijnen op de website voor Linux. Bijvoorbeeld, op een Debian-gebaseerd systeem volg je deze stappen:
Voeg de GPG-sleutel toe voor de MongoDB-repository:
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
Voeg de MongoDB-repository toe aan je systeem:
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
Werk de pakketlijst bij:
sudo apt update
Installeer MongoDB:
sudo apt install mongodb-org -y

Na succesvolle installatie controleer je de geïnstalleerde versie:
mongod --version

Na de installatie kun je de service inschakelen, starten en de status controleren:
sudo systemctl enable mongod
sudo systemctl start mongod
sudo systemctl status mongod

Als je op zoek bent naar een betrouwbare, krachtige en betaalbare oplossing voor je workflows, biedt Hostman Linux VPS-hostingopties, waaronder Debian VPS, Ubuntu VPS en VPS CentOS.
Na de installatie kun je verbinding maken met een instantie. Als deze lokaal is, typ je mongosh. Standaard maakt dit verbinding met de instantie die draait op poort 27017 op localhost:
mongosh

De volgende syntaxis wordt gebruikt om verbinding te maken met een externe server:
mongodb+srv://<gebruikersnaam>:<wachtwoord>@<cluster_adres>/<database>?retryWrites=true&w=majority
Vervang <gebruikersnaam>, <wachtwoord>, <cluster_adres> en <database> door de werkelijke inloggegevens en verbindingsdetails.
Zodra je bent verbonden, kun je met databases werken. Voordat je begint, toont de interface een welkomstbericht:

De toegewezen database van een nieuw Shell-exemplaar heet test. Deze kan veilig worden gebruikt voor experimenten.
Nuttige bewerkingen zijn hieronder weergegeven:
Voer show dbs uit om een overzicht te krijgen van alle beschikbare databases:
show dbs

De meeste opdrachten werken op een database of een verzameling binnen de database. Het object db vertegenwoordigt de momenteel geselecteerde database:
db

Voer de use-opdracht in met de databasenaam, bijvoorbeeld new_db, om deze te maken of ernaar te schakelen:
use new_db

Vervang new_db door de daadwerkelijke naam van de database.
Voeg eerst een object met een naam toe aan student_data in de bestaande new_db:
db.student_data.insertOne({name: 'School has 500 students'})

Gebruikers kunnen ook meerdere documenten invoegen in student_data, elk met een veld name met opgegeven waarden. Dit maakt batchinvoer van gegevens in de collectie mogelijk:
db.student_data.insertMany([
{name: 'School has 500 students'},
{name: 'School has 600 students'}
])

Zodra de gegevens zijn ingevoerd, geef je de bestaande collecties weer:
show collections

Als je geen verdere taken wilt uitvoeren, verlaat dan de interface door:
exit

Je begrijpt nu de basisbewerkingen van de Shell.
Bij het werken met de Shell zijn CRUD-bewerkingen (Create, Read, Update, Delete) essentieel. Laten we enkele basisbewerkingen uitvoeren:
Wanneer je nieuwe informatie in een collectie invoegt, gebruik je de functie insertOne. Laten we een nieuwe collectie aanmaken en vullen met de vereiste informatie, inclusief name (naam), age (leeftijd) en city (stad):
db.collection.insertOne({ name: "Harry", age: 45, city: "Sydney" })

Je kunt documenten in een collectie opvragen met de functie find. Bijvoorbeeld, alle records met een leeftijd groter dan 25 worden opgehaald:
db.collection.find({ age: { $gt: 25 } }) // Condition where age is greater than 25

Gebruik de functies updateOne of updateMany om bestaande documenten te wijzigen. Bijvoorbeeld, de leeftijd van Harry wordt bijgewerkt naar 50:
db.collection.updateOne({ name: "Harry" }, { $set: { age: 50 } })

Gebruik de methoden deleteOne of deleteMany om records uit de collectie te verwijderen. Deze opdracht verwijdert een document met de waarde John in het naamveld:
db.collection.deleteOne({ name: "John" })

In deze stap voer je complexe bewerkingen uit met behulp van geavanceerde functies. Dankzij debugging-, profilerings- en prestatieoptimalisatietools helpt de Shell om knelpunten te identificeren en je configuratie te optimaliseren.
Met pijplijnen kun je records berekenen en geaggregeerde resultaten verkrijgen. Door pijplijnen te gebruiken, kun je complexe analyses en transformaties maken om waardevolle inzichten uit ruwe gegevens te halen. Om een pijplijn van stappen uit te voeren, gebruik je de functie aggregate. Hier is een voorbeeld:
db.collection.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$city", total: { $sum: "$amount" } } },
{ $sort: { total: -1 } }
])

In dit script filtert de pijplijn documenten met status A, groepeert ze per city, telt de bedragen op en sorteert de resultaten in aflopende volgorde.
De aggregatiepijplijn is een krachtig hulpmiddel voor data-analyse en transformatie. Ze bestaat uit verschillende fasen, die elk de documentstroom veranderen. Deze fasen omvatten:
$project: selecteert of sluit specifieke velden uit.
$match: past een queryvoorwaarde toe om te filteren.
$group: groepeert records op een veld en berekent aggregaties.
$sort: sorteert records op een bepaald veld.
$limit: beperkt het aantal records.
$skip: slaat een bepaald aantal records over.
Een krachtig model voor het verwerken van grote datasets. Gebruik het mapReduce-commando om MapReduce-taken uit te voeren:
// Voorbeeldgegevens
db.collection.insertMany([
{ name: "Harry", age: 25, salary: 5000 },
{ name: "Buttler", age: 30, salary: 6000 },
{ name: "Morgan", age: 35, salary: 7000 }
]);
// Map-functie
var mapFunction = function() {
emit(this.age, this.salary);
};
// Reduce-functie
var reduceFunction = function(keyAge, valuesSalaries) {
return Array.sum(valuesSalaries);
};
// Voer MapReduce uit
db.runCommand({
mapreduce: "collection",
map: mapFunction,
reduce: reduceFunction,
out: "results"
});
db.results.find().forEach(printjson); // Resultaten weergeven

mapFunction de leeftijd als sleutel en het salaris als waarde door.De reduceFunction telt de salarissen op voor elke leeftijdsgroep.
De resultaten worden opgeslagen in een nieuwe collectie genaamd results, en de uitvoer wordt weergegeven met db.results.find().forEach(printjson).
Het resultaat wordt hieronder weergegeven:

Gebruik de projectie-operator om te bepalen welke velden moeten worden opgenomen of uitgesloten uit de resultaten. Hiermee kun je specifieke velden weergeven, bijvoorbeeld alleen name en age. Laten we alleen deze velden projecteren:
db.collection.find({}, { name: 1, age: 1 })

Sorteer de resultaten met de sort-functie. Deze haalt alle documenten op en sorteert ze vervolgens in aflopende volgorde op leeftijd, zodat de hoogste waarden eerst verschijnen. Laten we sorteren op leeftijd in aflopende volgorde:
db.collection.find().sort({ age: -1 })

Met de limit-functie kun je het aantal resultaten beperken. Bijvoorbeeld, haal de eerste drie documenten van de collectie op. Dit is handig om een klein deel van de gegevens te bekijken zonder alles op te halen. Beperk tot 3 resultaten:
db.collection.find().limit(3)

Gebruik de skip-functie om records over te slaan. Bijvoorbeeld, sla de eerste twee documenten over in de collectie. Dit is handig voor paginering of om initiële records over te slaan. Sla de eerste 2 resultaten over:
db.collection.find().skip(2)

Gebruikers kunnen scripts schrijven om taken in de Shell te automatiseren. Sla het script op in een .js-bestand en voer het uit met mongosh. Dit is handig om herhalende taken efficiënt uit te voeren, zoals het invoegen van gegevens of batch-updates:
mongosh script.js

Door MongoDB-commando’s te beheersen, krijg je waardevolle inzichten in je gegevens.
Met de interactieve MongoDB Shell-interface kun je herhalende beheertaken uitvoeren, zoals schrijven, lezen en wijzigen. Bovendien kun je bestaande collecties raadplegen, nieuwe objecten aan de database toevoegen en beheertaken uitvoeren. Van eenvoudige CRUD-bewerkingen tot complexe aggregaties en scripting, gebruikers kunnen de interface efficiënt gebruiken voor uiteenlopende taken.
Door scripts uit te voeren, kunnen gebruikers repetitieve taken effectief automatiseren. Deze handleiding heeft de installatie, configuratie en beheer van databases, collecties en gebruikers behandeld.