MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So verwalten Sie Datenbanken und Sammlungen in MongoDB


Einführung

MongoDB verwendet dokumentenorientierte Strukturen zum Speichern, Verwalten und Verarbeiten von Daten. Einzelne Dokumente werden in Sammlungen organisiert, die wiederum in Datenbanken gespeichert werden. Da das Schema jedes Dokuments nicht durch ein statisches Schema definiert ist, bieten dokumentbasierte Systeme mehr Flexibilität als relationale Systeme, die aus Tabellen und Datensätzen bestehen.

In diesem Leitfaden sprechen wir darüber, wie die Strukturen erstellt und verwaltet werden, die MongoDB zum Organisieren von Daten verwendet. Wir behandeln, wie Datenbanken erstellt und verwaltet werden und wie Sammlungen erstellt werden, um ähnliche oder verwandte Dokumente zu speichern.



So zeigen Sie vorhandene Datenbanken an

Bevor wir mit dem Erstellen neuer Datenbanken beginnen, ist es hilfreich, sich mit einigen der Methoden vertraut zu machen, die MongoDB zum Auffinden von Informationen zu vorhandenen Datenbanken bereitstellt. Dies kann Ihnen dabei helfen, den aktuellen Status des Systems zu verstehen, bevor Sie Änderungen vornehmen.

Um alle Datenbanken auf dem System anzuzeigen, auf die Sie Zugriff haben, verwenden Sie show dbs Methode:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

MongoDB antwortet mit den Namen aller zugänglichen Datenbanken auf dem System sowie einer Zusammenfassung ihres aktuellen Speicherplatzes.

Verwenden Sie db.getName(), um zu sehen, auf welcher Datenbank Sie gerade arbeiten Befehl oder sein abgekürzter Alias, db :

db
test

Möglicherweise stellen Sie fest, dass Sie derzeit eine Datenbank verwenden, die von show dbs nicht aufgelistet wurde Befehl. Dies liegt daran, dass in MongoDB die Datenbank nicht wirklich erstellt wird, bis Sie das erste Dokument in die Datenbank schreiben. In der obigen Beispielausgabe ist die Shell also darauf vorbereitet, mit einem test zu arbeiten Datenbank, aber da sie noch nicht existiert, wird sie nicht von show dbs zurückgegeben Befehl.

Um zu einer anderen Datenbank zu wechseln, können Sie den use verwenden Befehl:

use admin
switched to db admin

Um einige grundlegende Informationen über Ihre aktuelle Datenbank zu erhalten, können Sie db.stats() verwenden Methode:

db.stats()
{        "db" : "admin",        "collections" : 3,        "views" : 0,        "objects" : 4,        "avgObjSize" : 278.25,        "dataSize" : 1113,        "storageSize" : 86016,        "indexes" : 5,        "indexSize" : 147456,        "totalSize" : 233472,        "scaleFactor" : 1,        "fsUsedSize" : 2876923904,        "fsTotalSize" : 25832407040,        "ok" : 1}

Die Ausgabe zeigt Informationen über die Anzahl der Sammlungen in der Datenbank, Speicherstatistiken, Indexinformationen und mehr.



Wie man Datenbanken erstellt

MongoDB hat keinen expliziten Befehl zum Erstellen einer neuen Datenbank. Stattdessen müssen Sie MongoDB, wie bereits erwähnt, stattdessen mitteilen, dass Sie neue Dokumente in eine neue Datenbank schreiben möchten. Wenn diese Dokumente erstellt werden, erstellen sie implizit die Datenbank.

Um MongoDB darauf vorzubereiten, in eine neue Datenbank zu schreiben, führen Sie den Befehl use aus Befehl, um zu einer nicht existierenden Datenbank zu wechseln.

Hier richten wir MongoDB ein, um eine neue Datenbank namens playground zu erstellen :

use playground
switched to db playground

Wenn Sie Ihre aktuelle Datenbank überprüfen, wird diese bestätigen, dass der playground Datenbank ist derzeit das Ziel von datenbankbezogenen Befehlen:

db
playground

Da wir jedoch, wie bereits erwähnt, noch keine Dokumente erstellt haben, wurde die Datenbank selbst noch nicht erstellt:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Um die neue Datenbank tatsächlich zu erstellen, müssen wir zuerst etwas erstellen.



Wie man die Sammlungen in einer Datenbank anzeigt

In MongoDB Sammlungen sind Strukturen, die zum Gruppieren von Dokumenten verwendet werden, wobei ein beliebiges Kategorisierungssystem verwendet wird, das Sie implementieren möchten. Sie leben in Datenbanken und speichern Dokumente.

Sie können die verfügbaren Sammlungen in der Datenbank sehen, die Sie gerade verwenden, indem Sie show collections verwenden Methode.

Hier wechseln wir zum admin Datenbank, die einige Sammlungen zur Demonstration zur Verfügung hat:

use adminshow collections
system.rolessystem.userssystem.version

Alternativ können Sie dieselben Sammlungsnamen in einem Array mit db.getCollectionNames() abrufen Methode:

db.getCollectionNames()
[ "system.roles", "system.users", "system.version" ]

Um zusätzliche Informationen über die Sammlungen in der aktuellen Datenbank anzuzeigen, verwenden Sie db.getCollectionInfos() Methode:

db.getCollectionInfos()
[        {                "name" : "system.roles",                "type" : "collection",                "options" : {                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("776b1fd7-6014-4191-b33c-21350b590627")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        },        {                "name" : "system.users",                "type" : "collection",                "options" : {                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("8c824fd1-2150-4413-8fac-0b77d16505e5")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        },        {                "name" : "system.version",                "type" : "collection",                "options" : {                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("7501483a-45cc-492e-a1fd-ccb4349650cb")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        }]

Sie können optional auch ein Dokument an den Befehl übergeben, um die Ergebnisse zu filtern. Zum Beispiel, wenn Sie nur die Informationen über die system.version sehen möchten Sammlung, könnten Sie Folgendes eingeben:

db.getCollectionInfos(    {        name: "system.version"    })
[        {                "name" : "system.version",                "type" : "collection",                "options" : {                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("7501483a-45cc-492e-a1fd-ccb4349650cb")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        }]

Um zu überprüfen, wie viele Dokumente eine Sammlung enthält, verwenden Sie db.<collection>.count() Methode. Der folgende Befehl prüft beispielsweise, wie viele Dokumente sich in system.users befinden Sammlung:

db.system.users.count()
2

Um grundlegende Statistiken über die Sammlungen in der aktuellen Datenbank anzuzeigen, verwenden Sie db.printCollectionStats() Methode:

db.printCollectionStats()

Der Befehl gibt möglicherweise mehr Informationen aus, als Sie leicht verarbeiten können, enthält aber, ist aber in einigen Szenarien hilfreich, in denen Sie sich die Eigenschaften einer Sammlung genau ansehen müssen.



So erstellen Sie Sammlungen

Um eine neue Sammlung zu erstellen, gibt es zwei Möglichkeiten:Sie können Sammlungen entweder implizit oder explizit erstellen.

Wie bei Datenbanken kann MongoDB automatisch Sammlungen erstellen, wenn ein Dokument zum ersten Mal in sie geschrieben wird. Diese Methode weist MongoDB an, eine neue Sammlung zu erstellen, indem ein Dokument in eine Sammlung eingefügt wird, die noch nicht existiert.

Zum Beispiel können wir zurück zum playground wechseln Datenbank, die uns früher interessiert hat. Sobald wir uns in diesem Namensraum befinden, können wir ein neues Dokument in eine Sammlung einfügen, indem wir insert.() aufrufen Befehl auf den Namen, den wir für die neue Sammlung verwenden möchten. Hier können wir ein Dokument über eine Folie in einer neuen Sammlung namens equipment erstellen :

use playgrounddb.equipment.insert({name: "slide"})
switched to db playgroundWriteResult({ "nInserted" : 1 })

Die Ausgabe zeigt an, dass ein Dokument geschrieben wurde. Der obige Befehl führte drei separate Aktionen aus. Zuerst erstellte MongoDB den playground Datenbank, auf die wir in unserem use verwiesen haben Befehl. Es hat auch die equipment erstellt Sammlung innerhalb der Datenbank, da wir insert() aufrufen Befehl für diesen Sammlungsnamen. Schließlich erstellt es das eigentliche Dokument innerhalb des equipment Sammlung unter Verwendung der Eingabe, die wir für insert() bereitgestellt haben Befehl.

Sie können mit den folgenden Befehlen überprüfen, ob alle diese Aktionen ausgeführt wurden:

show dbsshow collectionsdb.equipment.count()db.equipment.find()

Die Ausgabe sollte zeigen, dass der playground Datenbank gehört nun zu den aufgelisteten Datenbanken, die equipment Sammlung aufgeführt ist, dass sich innerhalb der equipement ein Dokument befindet Sammlung und dass das Dokument {name: "slide"} ist Dokument, das wir in den Befehl eingefügt haben.

Die andere Option zum Erstellen von Sammlungen ist die explizite Verwendung von db.createCollection() Methode. Auf diese Weise können Sie Sammlungen erstellen, ohne ihnen Dokumente hinzuzufügen.

Beispielsweise können Sie im playground eine neue Sammlung erstellen Datenbank namens maintenance.requests indem Sie Folgendes eingeben:

db.createCollection("maintenance.requests")
{ "ok" : 1 }

Wir können überprüfen, ob die neue Sammlung angezeigt wird, wenn wir sie abfragen, aber dass sie keine Dokumente enthält:

show collectionsdb.maintenance.requests.count()
equipmentmaintenance.requests0

Die db.createCollection() -Methode ist in erster Linie nützlich, da sie es Ihnen ermöglicht, bei der Erstellung verschiedene Optionen anzugeben. Beispielsweise möchten wir möglicherweise eine gedeckelte Sammlung erstellen , bei der es sich um eine Sammlung handelt, die eine Obergrenze für die zugewiesene Größe beibehält, die sie speichert, indem sie ihr ältestes Dokument löscht, wenn sie voll ist.

So erstellen Sie eine begrenzte Sammlung mit dem Namen notifications die höchstens 10240 Bytes an Informationen speichern kann, könnte man so nennen:

db.createCollection(    "notifications",    {        capped: true,        size: 10240    })
{ "ok" : 1}

Dadurch wird eine begrenzte notification erstellt Sammlung, die wir überprüfen können, indem wir Folgendes eingeben:

db.getCollecitonInfos({"options.capped": true})
[        {                "name" : "notifications",                "type" : "collection",                "options" : {                        "capped" : true,                        "size" : 10240                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("dff7bfb0-1cfc-4170-ba60-fbb834ac6925")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        }]


So löschen Sie Sammlungen

Um eine Sammlung zu löschen, können Sie drop() verwenden -Methode für die Sammlung selbst.

Zum Beispiel, um die begrenzten notifications zu löschen Sammlung, die wir erstellt haben, können Sie Folgendes eingeben:

db.notifications.drop()
true

Sie können überprüfen, ob die Operation erfolgreich war, indem Sie die Sammlungen in der aktuellen Datenbank erneut auflisten:

show collections
equipmentmaintenance.requests


So löschen Sie Datenbanken

Um eine ganze Datenbank zu löschen, rufen Sie db.dropDatabase() auf Befehl. Dadurch wird die aktuelle Datenbank gelöscht, stellen Sie also sicher, dass Sie sich in der richtigen Datenbank befinden, bevor Sie Folgendes ausführen:

use playgrounddb.dropDatabase()
switched to db playground{ "dropped" : "playground", "ok" : 1 }

Wenn Sie die Liste der verfügbaren Datenbanken überprüfen, playground wird nicht mehr angezeigt:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Da wir noch nicht auf eine neue Datenbank umgestellt haben, ist MongoDB immer noch so eingerichtet, dass es eine playground erstellt Datenbank, falls wir uns entscheiden, eine neue Sammlung oder ein neues Dokument hinzuzufügen. Sie können dies mit db überprüfen Befehl:

db
playground


Fazit

Das Erstellen und Verwalten von Datenbanken und Sammlungen ist eine wichtige Fähigkeit bei der Verwendung von MongoDB. Mit diesen grundlegenden Organisationstools können Sie zusammengehörige Dokumente gruppieren, Teilmengen von Informationen abfragen und Autorisierungsrichtlinien für verschiedene Datentypen einrichten. Wenn Sie sich mit der effektiven Verwaltung dieser Strukturen vertraut machen, können Sie Ihre Daten effektiver und mit weniger Überraschungen verwalten.