Auf einen Blick: Wichtige MongoDB-Befehle für das Datenbankmanagement sind umrissen und konzentrieren sich auf Verbindung, Benutzerverwaltung und Protokollkontrolle. Praktische Befehlsbeispiele werden bereitgestellt, um Benutzer zu erstellen, zu aktualisieren und zu löschen sowie Sammlungen und Datenbanken zu verwalten.
- MongoDB arbeitet mit Dokumenten und Sammlungen und gewährleistet so eine hohe Leistung.
- Wichtige Befehle umfassen Benutzerverwaltung, Datenbankstatistiken und Sammlungsdetails.
Dieser Artikel behandelt die nützlichsten Befehle für die MongoDB-Datenbankverwaltung.
Zunächst machen wir uns mit den grundlegenden Konzepten von MongoDB vertraut. Anschließend zeige ich Ihnen, wie man verschiedene grundlegende administrative Funktionen ausführt, mit Befehlen für:
- Anschluss
- Datenbanken, Sammlungen, Rollen und Nutzer anzeigen
- Benutzerverwaltung
- Überprüfung der Protokolle
- Verwaltung der Datenbank
- Sammlungsdetails
- Umbenennung von Sammlungen
- Eine Instanz beenden
Fangen wir an!
MongoDB-Überblick
MongoDB ist eine leistungsstarke, hoch skalierbare plattformübergreifende NoSQL-Datenbank. MongoDB stützt sich auf Konzepte wie Dokumente, Sammlungen und Datenbanken:
- Sammlungen und Dokumente sind analog zu der traditionellen Tabelle und Zeilen in einer RDBMS-Datenbank.
- Eine einzelne MongoDB-Instanz kann mehrere Datenbanken enthalten. Die Datenbank ist ein physischer Container für Sammlungen mit einer eigenen Dateistruktur im System.
Eine Sammlung enthält eine Gruppe von MongoDB-Dokumenten. Sammlungen werden innerhalb einer Datenbank erstellt und setzen kein Schema wie eine herkömmliche Datenbank durch. Daher können verschiedene Dokumente in derselben Sammlung unterschiedliche Felder haben. MongoDB-Dokumente basieren auf Schlüssel-Wert-Paaren.
Werfen wir einen kurzen Blick darauf, wie die traditionelle RDBMS-Terminologie mit der MongoDB-Struktur zusammenhängt.
Überprüfung der Protokolle
Umbenennung von Sammlungen
| Relationales Datenbankverwaltungssystem | MongoDB |
| Datenbank | Datenbank |
| Tabelle | Sammlung |
| Row | BSON-Dokument |
| Säule | BSON-Feld |
| Index | Index |
| Primärschlüssel | _id Feld (Primärschlüssel) Standardmäßig erzeugt MongoDB automatisch eine 12-Byte-Hexadezimalzahl für jedes Dokument. |
| Gruppe | Aggregation |
| Tritt bei. | Einbettung und Verknüpfung |
Wie jede Datenbank benötigt MongoDB eine Verwaltung. Hier kommen administrative Befehle ins Spiel – schauen wir uns das mal an.
Befehle zur Verbindung mit MongoDB
Zuerst müssen wir wissen, wie man sich mit einer MongoDB-Datenbank verbindet. Man kann den Mongo-Befehl verwenden, um sich mit einer MongoDB-Datenbank zu verbinden und bei Bedarf Parameter wie Host und Port zu verwenden.
- Mongo Führe diesen Befehl in der localhost-Shell aus, um sich mit der lokalen Datenbank am Standardport 27017 zu verbinden.
- Mongo <host>/<Datenbank> Gib Host und Datenbank als Parameter an, um mit einer bestimmten Datenbank verbunden zu werden.
- Mongo –host <Hostname/IP> –Port <Port Nr> [Optionen] Sie können dieses Format verwenden, um verschiedene Optionen beim Anschließen der Datenbank anzugeben. Siehe die Mongo Man-Seiten oder Hilfe für detaillierte Informationen zu allen verfügbaren Optionen.
mongo –host <hostname/IP> –port <port no> --authenticationDatabase <database> -u <user> -p <password>
Hilfe
mongo --host 10.10.10.59 --port 27017 --verbose
Wenn die Authentifizierung in der MongoDB-Installation aktiviert ist, können wir die Benutzerdaten und die Authentifizierungsdatenbank angeben. In der Authentifizierungsdatenbank befinden sich die Benutzerdaten, das kann jede Datenbank sein, die zur Benutzererstellung verwendet wird. Wenn du das Passwort im Befehl nicht gibst, wird der cmd später danach fragen.
mongo --port 27017 --authenticationDatabase "admin" -u "barryadmin" -p
MongoDB-Show-Befehl
Schauen wir uns an, wie man Objekte in einer MongoDB-Datenbank ansieht. Sie können die bestehenden Datenbanken, Sammlungen, Rollen und Benutzer mit dem Befehl 'zeigen ' abrufen.
Alle Datenbanken ansehen
show dbs
Sammlungen in einer Datenbank anzeigen
show collections / db.getCollectionNames()
Rollen in einer Datenbank anzeigen
show roles
Benutzer in einer Datenbank anzeigen
show users / db.getUsers()
Benutzerverwaltungsbefehle
Eine der wichtigsten administrativen Aufgaben ist die Verwaltung von Berechtigungen für Benutzer. MongoDB bietet diese Funktionalität mithilfe von Benutzern und Rollen und verfügt über integrierte Rollen für einfache Zugriffskontrollen.
Man muss die Option "Authentifizierung" in der MongoDB-Konfigurationsdatei aktivieren, um die Zugriffskontrollfunktion zu nutzen. Füge die folgenden Zeilen in die mongod.conf-Datei hinzu und starte den MongoDB-Dienst neu, um die Änderungen widerzuspiegeln.
/etc/mongod.conf
security:
authorization: "enabled"
Erstellen eines Benutzers
Der Befehl createUser ermöglicht es uns, Benutzer zu erstellen. Lassen Sie uns einen Benutzer für die Fahrzeugdatenbank mit nur Lese- und Schreibberechtigungen erstellen.
Syntax:
Beispiel:
Ergebnis:
db.createUser(
{
user: ,
pwd: ,
roles: [
{role: , db: }
]
}
)
Beispiel:
use vehicles
db.createUser(
{
user: "barryvehicles",
pwd: passwordPrompt(),
roles: [
{role: 'readWrite', db: "vehicles"}
]
}
)
Ergebnis:
Die passwordPromt() -Funktion fragt beim Ausführen des Befehls createUser nach dem Passwort. Der Benutzer wird in der Datenbank "vehicles" erstellt.
Wenn wir uns mit diesem Benutzer authentifizieren, müssen wir die "Fahrzeuge"-Datenbank als "authenticationDatabase" angeben. Ein Datenbankbenutzer kann in jeder Datenbank erstellt werden, während Berechtigungen für andere Datenbanken definiert werden.
Ergebnis:
mongo --port 27017 --authenticationDatabase "vehicles" -u "barryvehicles" -p
Ergebnis:
Aktualisierung von Benutzerdaten
Wir können die Details des Benutzers mit dem Befehl updateUser() aktualisieren. Beim Aktualisieren von Benutzerrollen müssen wir alle gewünschten Rollen angeben – da updateUser() bestehende Regeln überschreibt.
In diesem Beispiel aktualisieren wir den "barryvehicles"-Benutzer mit einem benutzerdefinierten Feld und geben der Admin-Datenbank Leseberechtigung. Der Abschnitt "customData" erlaubt uns, beliebige benutzerdefinierte Schlüsselpaaren zu erstellen. Dies hat keinen Einfluss auf Benutzerrollen; benutzerdefinierte Felder können eher als informativer Abschnitt betrachtet werden, in dem wir zusätzliche Details für den Benutzer hinzufügen können.
Syntax:
Beispiel:
Ergebnis:
db.updateUser(
<"username">,
{
customData : { },
roles: [
{role: , db: }
]
}
)
Beispiel:
db.updateUser(
"barryvehicles",
{
customData : { usertype: 'dbadmin' },
roles: [
{role: 'readWrite', db: "vehicles"},
{role: 'read', db: "admin"}
]
}
)
Ergebnis:
Löschen eines Benutzers
Wir können einen Benutzer mit dem Befehl dropUser() löschen. Im folgenden Beispiel löschen wir den Benutzer "barryvehicles".
Syntax:
Beispiel:
Ergebnis:
db.dropUser()
Beispiel:
>db.dropUser("barryvehicles")
Ergebnis:
Wir haben zwei Methoden, um Logs in MongoDB zu überprüfen. Wir können:
- Überprüfen Sie die Mongod-Logdatei
- Verwenden Sie den Befehl getLog()
getLog() gibt die zuletzt protokollierten Ereignisse zurück. Dieser Befehl liest die aktuellen 1024 MongoDB-Log-Ereignisse im RAM-Cache aus. In früheren Versionen von MongoDB wurden die Logs im Klartextformat zurückgegeben. In MongoDB 4.4 sind die Logs jedoch in Extended JSON v2.0 formatiert.
Syntax:
db.adminCommand( { getLog: } )
Es gibt drei mögliche Werte für den getLog() -Befehl. Das sind
- * gibt die Liste der verfügbaren Werte für den Befehl getLog() zurück.
- Global gibt alle aktuellen Logbucheinträge zurück.
- startupWarnings liefert Logeinträge zurück, die seit Beginn des aktuellen Prozesses Fehler oder Warnungen enthalten können.
Beispiel:
Ergebnis:
db.adminCommand( { getLog: "*" } )
db.adminCommand( { getLog : "global" } )
Ergebnis:
Datenbankverwaltungsbefehle
In diesem Abschnitt behandeln wir grundlegende Datenbankverwaltungsbefehle. Diese können helfen, Server-Statistiken, Sammlungswerte, Sammlungsgröße usw. zu bestimmen.
Hilfe ist ein unverzichtbarer Befehl im Werkzeugkasten jedes Administrators. Der Hilfebefehl gibt Ihnen eine Liste der in MongoDB verfügbaren Hilfsoptionen.
Normale Hilfe:
Ergebnis:
help
Ergebnis:
Hier können Sie alle in MongoDB verfügbaren Hilfeoptionen sehen. Wenn Sie alle Hilfebefehle erhalten möchten, die für die Arbeit mit Datenbanken benötigt werden, führen Sie den Befehl db.help() aus.
Ergebnis:
db.help()
Ergebnis:
Erhalten Sie Datenbankdetails
Der Befehl stats() liefert Statistiken der Datenbank. Die bereitgestellten Informationen reichen von der Anzahl der Sammlungen und Objekte (Dokumente) über Datenbankgrößen bis hin zu Indexen.
Der scaleFactor spiegelt wider, wie Datengrößen dargestellt werden. Der Standard-scaleFactor ist auf 1 gesetzt, was die Daten in Bytes anzeigt. Zum Beispiel können wir den scaleFactor auf 1024 ändern, um die Größen in Kilobyte anzuzeigen.
Ergebnis:
db.stats()
Ergebnis:
Wenn du die Serverdetails bekommen willst, benutze den Befehl db.serverStats().
Ergebnis:
db.serverStats()
Ergebnis:
Um eine Liste der Verbindungsnamen zu erhalten, verwenden Sie den Befehl getCollectionNames().
Ergebnis:
db.getCollectionNames()
Ergebnis:
Beschaffung und Rückgabe von Sammlungsdetails
Erhalten Sie Erhebungsstatistiken
Die Status()- Funktion bietet einen umfassenden Überblick über die Sammlung.
Ergebnis:
db.vehicledetails.stats()
Ergebnis:
Erhalten Sie Sammlungslatenz
Verwenden Sie den Befehl LatencyStatus(), um die durchschnittliche Latenz der Lese-, Schreiboperationen sowie die Anzahl der Lese- und Schreiboperationen zu erhalten.
Ergebnis:
db.vehicledetails.latencyStats()
Ergebnis:
Erhalten Sie die Sammlungsgrößen
Die folgenden Befehle werden verwendet, um die Größen von Sammlungen auf verschiedene Weise zu ermitteln:
- dataSize() zeigt die Größe der Daten innerhalb der Sammlung an.
- storageSize() gibt die Gesamtspeichermenge an, die den Dokumenten in der Sammlung zugewiesen ist.
- totalSize() gibt die Gesamtgröße der Sammlung an, einschließlich Dokumente und Indexen.
- totalIndexSize() gibt die indexierte Größe der Sammlung an.
Ergebnis:
db.vehicledetails.dataSize()
db.vehicledetails.storageSize()
db.vehicledetails.totalSize()
db.vehicledetails.totalIndexSize()
Ergebnis:
Da die "vehicledetails" eine kleine Sammlung sind, entspricht die storageSize totalIndexSize , da die indexierten Daten den Rohdaten in der Sammlung entsprechen, und eine weitere Kompression ist nicht machbar.
Wir können eine bestehende Sammlung mit der Funktion renameCollection umbenennen. (Diese Funktion ist nicht mit gesplitterten Sammlungen kompatibel.)
Beim Umbenennen einer Sammlung müssen wir den Quellnamensraum und den Zielnamensraum korrekt angeben. In MongoDB bezieht sich der Namensraum auf den eindeutigen Namen, in dem wir Datenbankobjekte identifizieren können.
Im untenstehenden Beispiel benennen wir die "vehicledetails"-Sammlung in der Fahrzeugdatenbank um. Wir haben die Namensräume als definiert . um zwischen den alten und neuen Sammlungen zu unterscheiden.
Ergebnis:
Serverbeendigung
Wenn wir die MongoDB-Instanz vollständig beenden wollen, können wir den eingebauten Befehl shutdownServer() verwenden. shutdownServer() bereinigt alle von Datenbanken verwendeten Ressourcen, bevor der MongoDB-Prozess beendet wird.
Der Befehl muss gegen die Admin-Datenbank zur Ausführung ausgeführt werden. Wir können dies erreichen, indem wir die getSiblingDB-Funktion verwenden, um die Admin-Datenbank anzuzeigen.
Syntax:
Die Force Option erzwingt eine Abschaltoperation und unterbricht laufende Operationen, um die MongoDB-Instanz zu beenden. Die Option timeoutSec kann verwendet werden, um die Zeit in Sekunden vor dem Abschalten festzulegen. In einer authentifizierten Umgebung muss der Benutzer das Shutdown-Recht haben, um diesen Befehl auszuführen.
Im folgenden Beispiel erzwingen wir eine Abschaltung der MongoDB-Instanz in 10 Sekunden. Die getSiblingDB-Funktion ermöglicht es uns, die Abschaltfunktion auf die Admin-Datenbank zu verweisen.
Ergebnis:
Damit ist dieses MongoDB-Befehlstutorial abgeschlossen. Alle oben genannten Befehle können mit der offiziellen MongoDB-Dokumentation weiter erläutert werden.
Verwandte Literatur
MongoDB-Leitfaden
- MongoDB-Überblick: Einstieg mit MongoDB
- Wie man MongoDB auf Ubuntu und Mac installiert
- Erstellung einer Datenbank in MongoDB
- MongoDB Shell Grundbefehle
- MongoDB Compass: Nutzung der Mongo GUI
- MongoDB rollenbasierte Zugriffskontrolle (RBAC) erklärt
- MongoDB-Projektion und Projektionsoperatoren erklärt
- MongoDB-Aggregatfunktionen erklärt
- MongoDB-Sortierung: sort()-Methode & Beispiele
- Verwendung von Push-and-Pull-Operatoren in MongoDB
- Wie man MongoDB $unwind
- 23 Gängige MongoDB-Abfrageoperatoren und deren Verwendung
- MongoDB GeoLocation-Abfragebeispiele
- Einführung in MongoDB-Transaktionen
- MongoDB-Indizes: Top-Indextypen und deren Verwaltung
- Die wichtigsten MongoDB-Befehle, die du kennen solltest
- MongoDB-Replikation: Eine vollständige Einführung
- Wie man einen MongoDB-Cluster einrichtet
- MongoDB Sharding: Konzepte, Beispiele & Tutorials
- MongoDB Atlas: Einrichtung und Nutzung von verwaltetem MongoDB
- Wie man MongoDB als Docker-Container ausführt
- MongoDB-Speichernutzung, Verwaltung und Anforderungen
- Wie man Mongodump für MongoDB-Backups verwendet
- Mongorestore-Beispiele zur Wiederherstellung von MongoDB-Backups
- Wie man PyMongo benutzt
- Wie man Mongoose für MongoDB und NodeJS verwendet
- MongoDB Spickzettel
- MongoDB vs Cassandra: NoSQL-Datenbanken im Vergleich
- PostgreSQL vs MongoDB: Vergleich von Datenbanken
- MySQL vs. MongoDB: Vergleich von Datenbanken
- MongoDB-Zertifizierungen: Eine Einführung
Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.