Die MongoDB Shell (mongosh) und ihre Vorgängerversion
(mongo) bieten eine Vielzahl von
Konfigurationsmöglichkeiten, um die Benutzererfahrung anzupassen und
spezifische Anforderungen zu erfüllen.
Beim Starten der Shell können Sie die Verbindung zu Ihrer MongoDB-Instanz oder Ihrem Cluster flexibel konfigurieren.
Verbindung zu einer spezifischen MongoDB-Instanz:
mongosh --host MeinHost --port 27017Falls Ihre MongoDB-Instanz eine Authentifizierung verwendet:
mongosh --username meinBenutzer --password meinPasswortZusätzlich können Sie die Authentifizierungsdatenbank angeben:
mongosh --authenticationDatabase admin --username meinBenutzer --password meinPasswortVerbinden Sie sich mit einem Replica Set:
mongosh --host replicaSetName/hostname1:27017,hostname2:27018,hostname3:27019Geben Sie den Router (mongos) an:
mongosh --host mongosHost:27017Die Shell kann beim Start eine Konfigurationsdatei auslesen, um wiederkehrende Einstellungen oder benutzerdefinierte Funktionen zu laden.
.mongorc.js
(für mongo) und .mongoshrc.js (für
mongosh)Die Datei befindet sich im Home-Verzeichnis des Benutzers und wird beim Start der Shell automatisch geladen.
.mongoshrc.js:// Automatisch mit einer bestimmten Datenbank verbinden
db = db.getSiblingDB('meineDatenbank');
// Hilfsfunktion zur Anzeige von Datenbanken
function zeigeDatenbanken() {
return db.adminCommand('listDatabases');
}
// Anpassung des Prompts
prompt = function() {
return db.getName() + "> ";
};Das Standard-Prompt der Shell kann individuell gestaltet werden:
prompt = function() {
return db.getName() + "@" + db.hostInfo().system.hostname + "> ";
};Legen Sie beim Start der Shell eine Standard-Datenbank fest:
db = db.getSiblingDB('meineDatenbank');Da die Shell eine JavaScript-Umgebung ist, können Sie Konfigurationen direkt in JavaScript vornehmen:
// Automatischer Wechsel in eine bestimmte Datenbank
if (db.getName() === 'test') {
db = db.getSiblingDB('meineDatenbank');
}
// Wiederverwendbare Funktion für spezifische Abfragen
function findeMaxAlter() {
return db.meineSammlung.find().sort({ alter: -1 }).limit(1);
}Für sichere Verbindungen können Sie TLS/SSL aktivieren:
mongosh --host MeinHost --port 27017 --tls --tlsCertificateKeyFile /pfad/zum/zertifikat.pem --tlsCAFile /pfad/zur/ca.pemUm über einen SSH-Tunnel auf MongoDB zuzugreifen:
ssh -L 27017:localhost:27017 benutzer@meinsserver
mongosh --host localhost --port 27017Mit dem --help-Flag können Sie alle verfügbaren
Startoptionen anzeigen:
mongosh --helpMongoDB Shell Scripting ermöglicht die Automatisierung von Datenbankaufgaben, wie das Einfügen, Abfragen und Aktualisieren von Daten sowie die Durchführung von Wartungsaufgaben. Durch die Verwendung von JavaScript in der Shell können komplexe Operationen und wiederholbare Workflows effizient implementiert werden.
MongoDB-Skripte werden als JavaScript-Dateien gespeichert und mit der Shell ausgeführt. Beispielsweise können Sie ein Skript erstellen, um Dokumente in eine Sammlung einzufügen:
insert.jsdb.meineSammlung.insertOne({
name: "Max",
alter: 30,
stadt: "Berlin"
});Führen Sie das Skript aus:
mongosh --host MeinHost --port 27017 meineDatenbank < insert.jsMit JavaScript-Schleifen können Sie mehrere Operationen automatisieren:
for (let i = 1; i <= 5; i++) {
db.meineSammlung.insertOne({ name: `Benutzer${i}`, alter: 20 + i });
}Definieren Sie Funktionen, um wiederkehrende Aufgaben zu modularisieren:
function benutzerEinfuegen(name, alter) {
db.meineSammlung.insertOne({ name: name, alter: alter });
}
benutzerEinfuegen("Anna", 25);
benutzerEinfuegen("Tom", 28);Nutzen Sie try-catch, um Fehler zu handhaben:
try {
db.meineSammlung.insertOne({ name: "FehlerTest" });
print("Dokument erfolgreich eingefügt.");
} catch (e) {
print("Fehler: " + e.message);
}Nutzen Sie die print()-Funktion, um Nachrichten oder
Ergebnisse in der Shell auszugeben:
let count = db.meineSammlung.countDocuments();
print("Anzahl der Dokumente: " + count);Halten Sie Skripte mit sleep() für eine bestimmte Zeit
an:
print("Warte 2 Sekunden...");
sleep(2000);Skripte können andere Dateien laden, um Modularität zu fördern:
load("utility.js");
// Nutzung der in "utility.js" definierten Funktion
utilityFunktion();komplexesSkript.jsDieses Skript kombiniert verschiedene Konzepte, um mehrere Dokumente einzufügen, Abfragen durchzuführen und die Ergebnisse auszugeben:
// Funktion zum Einfügen eines Dokuments
function einfuegenBenutzer(name, alter, stadt) {
try {
db.meineSammlung.insertOne({ name: name, alter: alter, stadt: stadt });
print(`Benutzer eingefügt: ${name}, ${alter}, ${stadt}`);
} catch (e) {
print("Fehler beim Einfügen: " + e.message);
}
}
// Benutzer einfügen
einfuegenBenutzer("Max", 30, "Berlin");
einfuegenBenutzer("Anna", 25, "Hamburg");
// Abfrage und Ausgabe
let ergebnisse = db.meineSammlung.find({ alter: { $gte: 25 } }).toArray();
print("Benutzer ab 25 Jahren:");
printjson(ergebnisse);
// Anzahl der Dokumente in der Sammlung
let anzahl = db.meineSammlung.countDocuments();
print(`Gesamte Anzahl der Dokumente: ${anzahl}`);Führen Sie das Skript aus:
mongosh --host MeinHost --port 27017 meineDatenbank < komplexesSkript.jstry-catch: Vermeiden
Sie, dass Skripte aufgrund von Fehlern abbrechen.print() für
Debug-Ausgaben.