{"id":55726,"date":"2022-11-08T09:56:28","date_gmt":"2022-11-08T08:56:28","guid":{"rendered":"https:\/\/kinqsta.com\/de\/?p=55726&#038;preview=true&#038;preview_id=55726"},"modified":"2023-08-18T09:19:24","modified_gmt":"2023-08-18T08:19:24","slug":"mongodb-datenbank-erstellen","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/","title":{"rendered":"Wie man eine MongoDB-Datenbank erstellt: 6 wichtige Aspekte, die du kennen solltest"},"content":{"rendered":"<p>Je nachdem, welche Anforderungen du an deine Software stellst, hast du vielleicht Flexibilit\u00e4t, Skalierbarkeit, Leistung oder Geschwindigkeit als Priorit\u00e4t. Daher sind Entwickler und Unternehmen oft verwirrt, wenn sie eine Datenbank f\u00fcr ihre Bed\u00fcrfnisse ausw\u00e4hlen. Wenn du eine Datenbank brauchst, die hohe Flexibilit\u00e4t und Skalierbarkeit bietet und Daten f\u00fcr Kundenanalysen zusammenfasst, ist MongoDB vielleicht die richtige Wahl f\u00fcr dich!<br \/>\n<br \/>\nIn diesem Artikel geht es um die Struktur der MongoDB-Datenbank und darum, wie du deine Datenbank erstellst, \u00fcberwachst und verwaltest! Los geht&#8217;s.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Wie ist eine MongoDB-Datenbank strukturiert?<\/h2>\n<p>MongoDB ist eine schema-freie NoSQL-Datenbank. Das hei\u00dft, du gibst keine Struktur f\u00fcr die Tabellen\/Datenbanken an, wie du es bei SQL-Datenbanken tust.<\/p>\n<p>Wusstest du, dass NoSQL-Datenbanken sogar schneller sind als <a href=\"https:\/\/kinqsta.com\/de\/blog\/mongodb-vs-mysql\/\">relationale<\/a> Datenbanken? Das liegt an Merkmalen wie Indexierung, Sharding und Aggregationspipelines. MongoDB ist auch f\u00fcr seine schnelle Abfrageausf\u00fchrung bekannt. Aus diesem Grund wird sie von Unternehmen wie Google, Toyota und Forbes bevorzugt.<\/p>\n<p>Im Folgenden gehen wir auf einige der wichtigsten Merkmale von MongoDB ein.<\/p>\n<h3>Dokumente<\/h3>\n<p>MongoDB hat ein Dokumentdatenmodell, das Daten als JSON-Dokumente speichert. Die Dokumente werden den Objekten im Anwendungscode zugeordnet, was die Verwendung f\u00fcr Entwickler einfacher macht.<\/p>\n<p>In einer relationalen Datenbanktabelle musst du eine Spalte hinzuf\u00fcgen, um ein neues Feld hinzuzuf\u00fcgen. Das ist bei Feldern in einem JSON-Dokument nicht der Fall. Felder in einem JSON-Dokument k\u00f6nnen sich von Dokument zu Dokument unterscheiden und werden daher nicht zu jedem Datensatz in der Datenbank hinzugef\u00fcgt.<\/p>\n<p>Dokumente k\u00f6nnen Strukturen wie Arrays speichern, die verschachtelt werden k\u00f6nnen, um hierarchische Beziehungen auszudr\u00fccken. Au\u00dferdem konvertiert MongoDB Dokumente in einen bin\u00e4ren JSON (BSON)-Typ. Dies erm\u00f6glicht einen schnelleren Zugriff und eine bessere Unterst\u00fctzung f\u00fcr verschiedene Datentypen wie String, Integer, Boolesche Zahlen und vieles mehr!<\/p>\n<h3>Replikats\u00e4tze<\/h3>\n<p>Wenn du eine neue Datenbank in MongoDB erstellst, legt das System automatisch mindestens 2 weitere Kopien deiner Daten an. Diese Kopien werden als &#8222;Replikats\u00e4tze&#8220; bezeichnet und replizieren kontinuierlich Daten zwischen ihnen, um eine bessere Verf\u00fcgbarkeit deiner Daten zu gew\u00e4hrleisten. Au\u00dferdem bieten sie Schutz vor Ausfallzeiten bei einem Systemausfall oder einer geplanten Wartung.<\/p>\n<h3>Sammlungen<\/h3>\n<p>Eine Sammlung ist eine Gruppe von Dokumenten, die mit einer Datenbank verbunden sind. Sie sind vergleichbar mit Tabellen in relationalen Datenbanken.<\/p>\n<p>Sammlungen sind jedoch viel flexibler. Zum einen sind sie nicht auf ein Schema angewiesen. Zweitens m\u00fcssen die Dokumente nicht denselben Datentyp haben!<\/p>\n<p>Um eine Liste der Sammlungen anzuzeigen, die zu einer Datenbank geh\u00f6ren, verwendest du den Befehl <code>listCollections<\/code>.<\/p>\n<h3>Aggregations-Pipelines<\/h3>\n<p>Du kannst dieses Framework nutzen, um verschiedene Operatoren und Ausdr\u00fccke zu verkn\u00fcpfen. Es ist flexibel, weil es dir erlaubt, Daten beliebiger Struktur zu verarbeiten, umzuwandeln und zu analysieren.<\/p>\n<p>Aus diesem Grund erm\u00f6glicht MongoDB schnelle Datenfl\u00fcsse und Funktionen \u00fcber 150 Operatoren und Ausdr\u00fccke. Au\u00dferdem verf\u00fcgt es \u00fcber mehrere Stufen, wie die Union-Stufe, die Ergebnisse aus mehreren Sammlungen flexibel zusammenf\u00fchrt.<\/p>\n<h3>Indizes<\/h3>\n<p>Du kannst jedes Feld in einem MongoDB-Dokument indizieren, um seine Effizienz zu erh\u00f6hen und die Abfragegeschwindigkeit zu verbessern. Die Indizierung spart Zeit, indem sie den Index durchsucht, um die gepr\u00fcften Dokumente einzuschr\u00e4nken. Ist das nicht viel besser, als jedes Dokument in der Sammlung zu lesen?<\/p>\n<p>Du kannst verschiedene Indizierungsstrategien verwenden, einschlie\u00dflich zusammengesetzter Indizes f\u00fcr mehrere Felder. Angenommen, du hast mehrere Dokumente, die den Vor- und Nachnamen des Mitarbeiters in verschiedenen Feldern enthalten. Wenn du m\u00f6chtest, dass der Vor- und Nachname zur\u00fcckgegeben wird, kannst du einen Index erstellen, der sowohl &#8222;Nachname&#8220; als auch &#8222;Vorname&#8220; enth\u00e4lt. Das ist viel besser als ein Index f\u00fcr &#8222;Nachname&#8220; und ein anderer f\u00fcr &#8222;Vorname&#8220;.<\/p>\n<p>Du kannst Tools wie Performance Advisor nutzen, um herauszufinden, welche Abfrage von Indizes profitieren k\u00f6nnte.<\/p>\n<h3>Sharding<\/h3>\n<p>Beim Sharding wird ein einzelner Datensatz auf mehrere Datenbanken verteilt. Dieser Datensatz kann dann auf mehreren Rechnern gespeichert werden, um die gesamte Speicherkapazit\u00e4t eines Systems zu erh\u00f6hen. Der Grund daf\u00fcr ist, dass gr\u00f6\u00dfere Datens\u00e4tze in kleinere St\u00fccke aufgeteilt und in verschiedenen Datenknoten gespeichert werden.<\/p>\n<p>MongoDB splittet Daten auf der Ebene der Sammlung und verteilt die Dokumente einer Sammlung auf die Shards in einem Cluster. Dies gew\u00e4hrleistet Skalierbarkeit, da die Architektur auch die gr\u00f6\u00dften Anwendungen bew\u00e4ltigen kann.<\/p>\n<h2>So erstellst du eine MongoDB-Datenbank<\/h2>\n<p>Zuerst musst du das richtige MongoDB-Paket f\u00fcr dein Betriebssystem installieren. Gehe auf die Seite <a href=\"https:\/\/www.mongodb.com\/try\/download\/community\">&#8222;MongoDB Community Server herunterladen&#8220;<\/a>. W\u00e4hle aus den verf\u00fcgbaren Optionen die neueste &#8222;Version&#8220;, das &#8222;Paket&#8220;-Format als Zip-Datei und als &#8222;Plattform&#8220; dein Betriebssystem aus und klicke auf &#8222;Herunterladen&#8220;, wie unten abgebildet:<\/p>\n<figure id=\"attachment_134838\" aria-describedby=\"caption-attachment-134838\" style=\"width: 594px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134838 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/MongoDB-Community-Server-Download-Process-1.png\" alt=\"Dieses Bild zeigt die verf\u00fcgbaren Optionen - Version, Plattform und Paket - beim Herunterladen von MongoDB Community Server.\" width=\"594\" height=\"814\"><figcaption id=\"caption-attachment-134838\" class=\"wp-caption-text\">MongoDB Community Server Download-Prozess. (Bildquelle: <a href=\"https:\/\/www.mongodb.com\/try\/download\/community2\">MongoDB Community Server<\/a>)<\/figcaption><\/figure>\n<p>Der Prozess ist ziemlich einfach, sodass du MongoDB im Handumdrehen in deinem System installiert hast!<\/p>\n<p>Wenn du die Installation abgeschlossen hast, \u00f6ffne die Eingabeaufforderung und gib <code>mongod -version<\/code> ein, um sie zu \u00fcberpr\u00fcfen. Wenn du nicht die folgende Ausgabe erh\u00e4ltst, sondern stattdessen eine Reihe von Fehlern, musst du die Installation m\u00f6glicherweise erneut durchf\u00fchren:<\/p>\n<figure id=\"attachment_134839\" aria-describedby=\"caption-attachment-134839\" style=\"width: 507px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134839 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Verifying-MongoDB-Version.png\" alt=\"Dies ist ein Codeschnipsel, um die MongoDB-Version nach der Installation zu \u00fcberpr\u00fcfen.\" width=\"507\" height=\"287\"><figcaption id=\"caption-attachment-134839\" class=\"wp-caption-text\">\u00dcberpr\u00fcfen der MongoDB-Version. (Bildquelle: <a href=\"https:\/\/www.configserverfirewall.com\/mongodb\/check-mongodb-version\/\">configserverfirewall<\/a>)<\/figcaption><\/figure>\n<h3>MongoDB-Shell verwenden<\/h3>\n<p>Bevor wir loslegen, stelle sicher, dass:<\/p>\n<ul>\n<li>Dein Client verf\u00fcgt \u00fcber Transport Layer Security und befindet sich auf deiner IP-<a href=\"https:\/\/docs.atlas.mongodb.com\/security\/ip-access-list\/\">Zulassungsliste<\/a>.<\/li>\n<li>Du hast ein Benutzerkonto und ein Passwort f\u00fcr den gew\u00fcnschten MongoDB-Cluster.<\/li>\n<li>Du hast MongoDB auf deinem Ger\u00e4t installiert.<\/li>\n<\/ul>\n<h4>Schritt 1: Zugriff auf die MongoDB-Shell<\/h4>\n<p>Starte den MongoDB-Server, indem du den Anweisungen des jeweiligen Betriebssystems folgst. Unter Windows gibst du den folgenden Befehl ein. F\u00fcr andere Betriebssysteme schau in der MongoDB-Dokumentation nach.<\/p>\n<pre><code class=\"language-markdown\">net start MongoDB<\/code><\/pre>\n<p>Dies sollte die folgende Ausgabe ergeben:<\/p>\n<figure id=\"attachment_134840\" aria-describedby=\"caption-attachment-134840\" style=\"width: 512px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134840 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/MongoDB-Server-Initialization.png\" alt=\"MongoDB Server starten.\" width=\"512\" height=\"179\"><figcaption id=\"caption-attachment-134840\" class=\"wp-caption-text\">MongoDB Server starten. (Bildquelle: <a href=\"https:\/\/www.c-sharpcorner.com\/article\/configure-a-windows-service-for-mongodb\/\">c-sharpcorner<\/a>)<\/figcaption><\/figure>\n<p>Der vorherige Befehl hat den MongoDB-Server initialisiert. Um ihn auszuf\u00fchren, m\u00fcssen wir in der Eingabeaufforderung <code>mongo<\/code> eingeben.<\/p>\n<figure id=\"attachment_134843\" aria-describedby=\"caption-attachment-134843\" style=\"width: 897px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134843 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Running-MongoDB-Server-2.png\" alt=\"Ausf\u00fchren von MongoDB Shell.\" width=\"897\" height=\"343\"><figcaption id=\"caption-attachment-134843\" class=\"wp-caption-text\">Ausf\u00fchren von MongoDB Shell. (Bildquelle: <a href=\"https:\/\/www.bmc.com\/blogs\/mongodb-create-database\/\">bmc<\/a>)<\/figcaption><\/figure>\n<p>Hier in der MongoDB-Shell k\u00f6nnen wir Befehle ausf\u00fchren, um Datenbanken zu erstellen, Daten einzuf\u00fcgen, Daten zu bearbeiten, administrative Befehle zu erteilen und Daten zu l\u00f6schen.<\/p>\n<h4>Schritt 2: Erstelle deine Datenbank<\/h4>\n<p>Im Gegensatz zu herk\u00f6mmlichen relationalen Datenbanken gibt es bei MongoDB keinen Befehl zur Erstellung einer Datenbank. Stattdessen gibt es ein Schl\u00fcsselwort namens <code>use<\/code>, das zu einer bestimmten Datenbank wechselt. Wenn die Datenbank nicht existiert, wird eine neue Datenbank erstellt, andernfalls wird eine Verkn\u00fcpfung mit der bestehenden Datenbank hergestellt.<\/p>\n<p>Um zum Beispiel eine Datenbank namens &#8222;Firma&#8220; zu erstellen, gibst du ein:<\/p>\n<pre><code class=\"language-markdown\">use Company<\/code><\/pre>\n<figure id=\"attachment_134845\" aria-describedby=\"caption-attachment-134845\" style=\"width: 1378px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134845 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Creating-Database-in-MongoDB-1.png\" alt=\"Dies ist ein Codeschnipsel zum Erstellen einer Datenbank in MongoDB.\" width=\"1378\" height=\"547\"><figcaption id=\"caption-attachment-134845\" class=\"wp-caption-text\">Datenbank in MongoDB erstellen.<\/figcaption><\/figure>\n<p>Du kannst <code>db<\/code> eingeben, um die Datenbank, die du gerade erstellt hast, in deinem System zu best\u00e4tigen. Wenn die neu erstellte Datenbank angezeigt wird, hast du dich erfolgreich mit ihr verbunden.<\/p>\n<p>Wenn du die vorhandenen Datenbanken \u00fcberpr\u00fcfen willst, gib <code>show dbs<\/code> ein. Dann werden alle Datenbanken in deinem System angezeigt:<\/p>\n<figure id=\"attachment_134847\" aria-describedby=\"caption-attachment-134847\" style=\"width: 1369px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134847 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Show-Databases-in-MongoDB-1.png\" alt=\"Dies ist ein Codeschnipsel, um die vorhandenen Datenbanken im System anzuzeigen.\" width=\"1369\" height=\"489\"><figcaption id=\"caption-attachment-134847\" class=\"wp-caption-text\">Anzeigen von Datenbanken in MongoDB.<\/figcaption><\/figure>\n<p>Standardm\u00e4\u00dfig werden bei der Installation von MongoDB die Datenbanken admin, config und local angelegt.<\/p>\n<p>Hast du bemerkt, dass die Datenbank, die wir erstellt haben, nicht angezeigt wird? Das liegt daran, dass wir noch keine Werte in der Datenbank gespeichert haben! Wir werden das Einf\u00fcgen im Abschnitt \u00fcber die Datenbankverwaltung besprechen.<\/p>\n<h3>Atlas UI verwenden<\/h3>\n<p>Du kannst auch mit dem MongoDB-Datenbankdienst Atlas beginnen. Auch wenn du f\u00fcr einige Funktionen von Atlas bezahlen musst, sind die meisten Datenbankfunktionen mit der kostenlosen Version verf\u00fcgbar. Die Funktionen der kostenlosen Version sind mehr als genug, um eine MongoDB-Datenbank zu erstellen.<\/p>\n<p>Bevor wir loslegen, solltest du sicherstellen, dass:<\/p>\n<ol>\n<li>Deine IP steht auf der Zulassen-Liste.<\/li>\n<li>Du hast ein Benutzerkonto und ein Passwort f\u00fcr den MongoDB-Cluster, den du verwenden m\u00f6chtest.<\/li>\n<\/ol>\n<p>Um eine MongoDB-Datenbank mit AtlasUI zu erstellen, \u00f6ffne ein Browserfenster und melde dich bei <a href=\"https:\/\/cloud.mongodb.com\/\">https:\/\/cloud.mongodb.com<\/a> an. Klicke auf der Seite deines Clusters auf <strong>Sammlungen durchsuchen<\/strong>. Wenn keine Datenbanken im Cluster vorhanden sind, kannst du deine Datenbank erstellen, indem du auf die Schaltfl\u00e4che <strong>Eigene Daten hinzuf\u00fcgen<\/strong> klickst.<\/p>\n<p>Du wirst aufgefordert, eine Datenbank und einen Sammlungsnamen anzugeben. Wenn du sie benannt hast, klicke auf <strong>Erstellen<\/strong> und du bist fertig! Jetzt kannst du neue Dokumente eingeben oder dich \u00fcber Treiber mit der Datenbank verbinden.<\/p>\n<h2>Verwalten deiner MongoDB-Datenbank<\/h2>\n<p>In diesem Abschnitt stellen wir dir einige M\u00f6glichkeiten vor, wie du deine MongoDB-Datenbank effektiv verwalten kannst. Das kannst du entweder mit dem MongoDB-Kompass oder mit Collections machen.<\/p>\n<h3>Sammlungen verwenden<\/h3>\n<p>W\u00e4hrend relationale Datenbanken \u00fcber klar definierte Tabellen mit bestimmten Datentypen und Spalten verf\u00fcgen, gibt es bei NoSQL keine Tabellen, sondern Sammlungen. Diese Sammlungen haben keine Struktur, und die Dokumente k\u00f6nnen variieren &#8211; du kannst verschiedene Datentypen und Felder haben, ohne dass das Format eines anderen Dokuments in derselben Sammlung \u00fcbereinstimmen muss.<\/p>\n<p>Zur Veranschaulichung erstellen wir eine Sammlung namens &#8222;Employee&#8220; und f\u00fcgen ihr ein Dokument hinzu:<\/p>\n<pre><code class=\"language-markdown\">db.Employee.insert(\n  {\n   \t\"Employeename\" : \"Chris\",\n   \t\"EmployeeDepartment\" : \"Sales\"\n  }\n)<\/code><\/pre>\n<p>Wenn das Einf\u00fcgen erfolgreich ist, wird <code>WriteResult({ \"nInserted\" : 1 })<\/code> zur\u00fcckgegeben:<\/p>\n<figure id=\"attachment_134848\" aria-describedby=\"caption-attachment-134848\" style=\"width: 1366px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134848 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Successful-Insertion-in-MongoDB.png\" alt=\"Dieser Codeschnipsel liefert WriteResult({ \" width=\"1366\" height=\"484\"><figcaption id=\"caption-attachment-134848\" class=\"wp-caption-text\">Erfolgreiche Einf\u00fcgung in MongoDB.<\/figcaption><\/figure>\n<p>Hier bezieht sich &#8222;db&#8220; auf die aktuell verbundene Datenbank. &#8222;Mitarbeiter&#8220; ist die neu erstellte Sammlung in der Unternehmensdatenbank.<\/p>\n<p>Wir haben hier keinen Prim\u00e4rschl\u00fcssel festgelegt, weil MongoDB automatisch ein Prim\u00e4rschl\u00fcsselfeld namens &#8222;_id&#8220; erstellt und ihm einen Standardwert zuweist.<\/p>\n<p>F\u00fchre den folgenden Befehl aus, um die Sammlung im JSON-Format auszuchecken:<\/p>\n<pre><code class=\"language-markdown\">db.Employee.find().forEach(printjson)<\/code><\/pre>\n<p>Ausgabe:<\/p>\n<pre><code class=\"language-markdown\">{\n  \"_id\" : ObjectId(\"63151427a4dd187757d135b8\"),\n  \"Employeename\" : \"Chris\",\n  \"EmployeeDepartment\" : \"Sales\"\n}<\/code><\/pre>\n<p>Obwohl der Wert &#8222;_id&#8220; automatisch zugewiesen wird, kannst du den Wert des Standard-Prim\u00e4rschl\u00fcssels \u00e4ndern. Diesmal f\u00fcgen wir ein weiteres Dokument in die Datenbank &#8222;Employee&#8220; ein, wobei wir den Wert &#8222;_id&#8220; auf &#8222;1&#8220; setzen:<\/p>\n<pre><code class=\"language-markdown\">db.Employee.insert(\n  {  \n   \t\"_id\" : 1,\n   \t\"EmployeeName\" : \"Ava\",\n   \t\"EmployeeDepartment\" : \"Public Relations\"\n  }\n)<\/code><\/pre>\n<p>Wenn wir den Befehl <code>db.Employee.find().forEach(printjson)<\/code> ausf\u00fchren, erhalten wir die folgende Ausgabe:<\/p>\n<figure id=\"attachment_134851\" aria-describedby=\"caption-attachment-134851\" style=\"width: 1764px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134851 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Primary-Key-for-Documents-in-Collection-1.png\" alt=\"Die Ausgabe zeigt die Dokumente in der Sammlung Employee zusammen mit ihrem Prim\u00e4rschl\u00fcssel\" width=\"1764\" height=\"694\"><figcaption id=\"caption-attachment-134851\" class=\"wp-caption-text\">Dokumente in der Sammlung mit ihrem Prim\u00e4rschl\u00fcssel.<\/figcaption><\/figure>\n<p>In der obigen Ausgabe ist der &#8222;_id&#8220;-Wert f\u00fcr &#8222;Ava&#8220; auf &#8222;1&#8220; gesetzt, anstatt automatisch einen Wert zu erhalten.<\/p>\n<p>Nachdem wir nun erfolgreich Werte in die Datenbank eingef\u00fcgt haben, k\u00f6nnen wir mit dem folgenden Befehl \u00fcberpr\u00fcfen, ob sie unter den bestehenden Datenbanken in unserem System auftaucht:<\/p>\n<pre><code class=\"language-markdown\">show dbs<\/code><\/pre>\n<figure id=\"attachment_134852\" aria-describedby=\"caption-attachment-134852\" style=\"width: 1714px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134852 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/List-of-Databases.png\" alt=\"Die Ausgabe zeigt die Sammlung der Mitarbeiter in den bestehenden Datenbanken in unserem System.\" width=\"1714\" height=\"460\"><figcaption id=\"caption-attachment-134852\" class=\"wp-caption-text\">Anzeige der Liste der Datenbanken.<\/figcaption><\/figure>\n<p>Und voila! Du hast erfolgreich eine Datenbank in deinem System erstellt!<\/p>\n<h3>Den MongoDB-Kompass verwenden<\/h3>\n<p>Obwohl wir mit MongoDB-Servern von der Mongo-Shell aus arbeiten k\u00f6nnen, kann das manchmal m\u00fchsam sein. Das wirst du vielleicht in einer Produktionsumgebung erleben.<\/p>\n<p>Es gibt jedoch ein von MongoDB entwickeltes Kompass-Tool (passenderweise Compass genannt), das die Arbeit erleichtern kann. Es verf\u00fcgt \u00fcber eine bessere Benutzeroberfl\u00e4che und zus\u00e4tzliche Funktionen wie Datenvisualisierung, Leistungsprofilerstellung und CRUD-Zugriff (Erstellen, Lesen, Aktualisieren, L\u00f6schen) auf Daten, Datenbanken und Sammlungen.<\/p>\n<p>Du kannst die <a href=\"https:\/\/www.mongodb.com\/docs\/compass\/current\/install\/\">Compass IDE<\/a> f\u00fcr dein Betriebssystem herunterladen und sie ganz einfach installieren.<\/p>\n<p>Als N\u00e4chstes \u00f6ffnest du die Anwendung und stellst eine Verbindung mit dem Server her, indem du den Verbindungsstring einf\u00fcgst. Wenn du ihn nicht finden kannst, kannst du auf <strong>Verbindungsfelder einzeln ausf\u00fcllen<\/strong> klicken. Wenn du die Portnummer bei der Installation von MongoDB nicht ge\u00e4ndert hast, klickst du einfach auf die Schaltfl\u00e4che Verbinden und schon bist du dabei! Andernfalls gibst du einfach die von dir festgelegten Werte ein und klickst auf <strong>Verbinden<\/strong>.<\/p>\n<figure id=\"attachment_134854\" aria-describedby=\"caption-attachment-134854\" style=\"width: 1384px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134854 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/New-Connection-Window-in-MongoDB-1.png\" alt=\"Dieses Bild zeigt das Fenster Neue Verbindung, in dem du die Verbindungsurl einf\u00fcgen kannst.\" width=\"1384\" height=\"535\"><figcaption id=\"caption-attachment-134854\" class=\"wp-caption-text\">Fenster Neue Verbindung in MongoDB (Bildquelle: <a href=\"https:\/\/www.mongodb.com\/docs\/compass\/current\/connect\/\">mongodb<\/a>)<\/figcaption><\/figure>\n<p>Als N\u00e4chstes gibst du im Fenster &#8222;Neue Verbindung&#8220; den Hostnamen, den Port und die Authentifizierung an.<\/p>\n<p>In MongoDB Compass kannst du eine Datenbank erstellen und gleichzeitig ihre erste Sammlung hinzuf\u00fcgen. So machst du es:<\/p>\n<ol>\n<li>Klicke auf <strong>Datenbank erstellen<\/strong>, um die Eingabeaufforderung zu \u00f6ffnen.<\/li>\n<li>Gib den Namen der Datenbank und ihre erste Sammlung ein.<\/li>\n<li>Klicke auf <strong>Datenbank erstellen<\/strong>.<\/li>\n<\/ol>\n<p>Du kannst weitere Dokumente in deine Datenbank einf\u00fcgen, indem du auf den Namen deiner Datenbank und dann auf den Namen der Sammlung klickst, um die Registerkarte <strong>Dokumente<\/strong> anzuzeigen. Du kannst dann auf die Schaltfl\u00e4che <strong>Daten hinzuf\u00fcgen<\/strong> klicken, um ein oder mehrere Dokumente in deine Sammlung einzuf\u00fcgen.<\/p>\n<p>Wenn du Dokumente hinzuf\u00fcgst, kannst du sie einzeln oder als mehrere Dokumente in einer Reihe eingeben. Wenn du mehrere Dokumente hinzuf\u00fcgst, musst du darauf achten, dass die Dokumente durch Kommata getrennt in eckige Klammern gesetzt werden. Zum Beispiel:<\/p>\n<pre><code class=\"language-markdown\">{ _id: 1, item: { name: \"apple\", code: \"123\" }, qty: 15, tags: [ \"A\", \"B\", \"C\" ] },\n{ _id: 2, item: { name: \"banana\", code: \"123\" }, qty: 20, tags: [ \"B\" ] },\n{ _id: 3, item: { name: \"spinach\", code: \"456\" }, qty: 25, tags: [ \"A\", \"B\" ] },\n{ _id: 4, item: { name: \"lentils\", code: \"456\" }, qty: 30, tags: [ \"B\", \"A\" ] },\n{ _id: 5, item: { name: \"pears\", code: \"000\" }, qty: 20, tags: [ [ \"A\", \"B\" ], \"C\" ] },\n{ _id: 6, item: { name: \"strawberry\", code: \"123\" }, tags: [ \"B\" ] }<\/code><\/pre>\n<p>Klicke abschlie\u00dfend auf <strong>Einf\u00fcgen<\/strong>, um die Dokumente zu deiner Sammlung hinzuzuf\u00fcgen. So w\u00fcrde der Textk\u00f6rper eines Dokuments aussehen:<\/p>\n<pre><code class=\"language-markdown\">{\n  \"StudentID\" : 1\n  \"StudentName\" : \"JohnDoe\"\n}<\/code><\/pre>\n<p>Hier lauten die Feldnamen &#8222;Sch\u00fclerID&#8220; und &#8222;Sch\u00fclername&#8220;. Die Feldwerte sind &#8222;1&#8220; bzw. &#8222;JohnDoe&#8220;.<\/p>\n<h3>N\u00fctzliche Befehle<\/h3>\n<p>Du kannst diese Sammlungen mit den Befehlen f\u00fcr die Rollen- und Benutzerverwaltung verwalten.<\/p>\n<h4>Befehle zur Benutzerverwaltung<\/h4>\n<p>Die MongoDB-Befehle zur Benutzerverwaltung enthalten Befehle, die sich auf den Benutzer beziehen. Mit diesen Befehlen k\u00f6nnen wir die Benutzer erstellen, aktualisieren und l\u00f6schen.<\/p>\n<h5>dropUser<\/h5>\n<p>Dieser Befehl l\u00f6scht einen einzelnen Benutzer aus der angegebenen Datenbank. Im Folgenden findest du die Syntax:<\/p>\n<pre><code class=\"language-markdown\">db.dropUser(username, writeConcern)<\/code><\/pre>\n<p>Hier ist <code>username<\/code> ein Pflichtfeld, das den Namen des Benutzers angibt, der aus der Datenbank entfernt werden soll. Das optionale Feld <code>writeConcern<\/code> enth\u00e4lt den Grad der Schreibsorge f\u00fcr den L\u00f6schvorgang. Das optionale Feld <code>writeConcern<\/code> legt den Grad der Schreibsorge fest.<\/p>\n<p>Bevor du einen Benutzer mit der Rolle <code>userAdminAnyDatabase<\/code> ablegst, musst du sicherstellen, dass es mindestens einen anderen Benutzer mit Benutzerverwaltungsrechten gibt.<\/p>\n<p>In diesem Beispiel l\u00f6schen wir den Benutzer &#8222;user26&#8220; in der Testdatenbank:<\/p>\n<pre><code class=\"language-markdown\">use test\ndb.dropUser(\"user26\", {w: \"majority\", wtimeout: 4000})<\/code><\/pre>\n<p>Ausgabe:<\/p>\n<pre><code class=\"language-markdown\">&gt; db.dropUser(\"user26\", {w: \"majority\", wtimeout: 4000});\ntrue<\/code><\/pre>\n<h5>createUser<\/h5>\n<p>Dieser Befehl erstellt einen neuen Benutzer f\u00fcr die angegebene Datenbank wie folgt:<\/p>\n<pre><code class=\"language-markdown\">db.createUser(user, writeConcern)<\/code><\/pre>\n<p>Hier ist <code>user<\/code> ein Pflichtfeld, das das Dokument mit den Authentifizierungs- und Zugangsinformationen \u00fcber den anzulegenden Benutzer enth\u00e4lt. Das optionale Feld <code>writeConcern<\/code> enth\u00e4lt den Grad der Schreibberechtigung f\u00fcr den Erstellungsvorgang. Der Grad der Schreibberechtigung kann durch das optionale Feld <code>writeConcern<\/code> bestimmt werden.<\/p>\n<p><code>createUser<\/code> gibt einen Fehler zur\u00fcck, wenn der Benutzer bereits in der Datenbank existiert.<\/p>\n<p>Du kannst einen neuen Benutzer in der Testdatenbank wie folgt anlegen:<\/p>\n<pre><code class=\"language-markdown\">use test\ndb.createUser(\n  {\n    user: \"user26\",\n    pwd: \"myuser123\",\n    roles: [ \"readWrite\" ]  \n  }\n);<\/code><\/pre>\n<p>Die Ausgabe sieht wie folgt aus:<\/p>\n<pre><code class=\"language-markdown\">Successfully added user: { \"user\" : \"user26\", \"roles\" : [ \"readWrite\", \"dbAdmin\" ] }<\/code><\/pre>\n<h5>grantRolesToUser<\/h5>\n<p>Du kannst diesen Befehl nutzen, um einem Benutzer zus\u00e4tzliche Rollen zu gew\u00e4hren. Um ihn zu verwenden, musst du die folgende Syntax beachten:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    grantRolesToUser: \"&lt;user&gt;\",\n    roles: [ &lt;roles&gt; ],\n    writeConcern: { &lt;write concern&gt; },\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Du kannst sowohl benutzerdefinierte als auch eingebaute Rollen in den oben genannten Rollen angeben. Wenn du eine Rolle angeben m\u00f6chtest, die in derselben Datenbank existiert, in der auch <code>grantRolesToRole<\/code>\u00a0l\u00e4uft, kannst du die Rolle entweder mit einem Dokument angeben, wie unten beschrieben:<\/p>\n<pre><code class=\"language-markdown\">{ role: \"&lt;role&gt;\", db: \"&lt;database&gt;\" }<\/code><\/pre>\n<p>Oder du kannst die Rolle einfach mit dem Namen der Rolle angeben. Zum Beispiel:<\/p>\n<pre><code class=\"language-markdown\">\"readWrite\"<\/code><\/pre>\n<p>Wenn du eine Rolle angeben willst, die in einer anderen Datenbank vorhanden ist, musst du die Rolle mit einem anderen Dokument angeben.<\/p>\n<p>Um eine Rolle in einer Datenbank zu gew\u00e4hren, brauchst du die Aktion <code>grantRole<\/code> in der angegebenen Datenbank.<\/p>\n<p>Hier ist ein Beispiel, um dir ein klares Bild zu geben. Nimm zum Beispiel einen Benutzer productUser00 in der Produktdatenbank mit den folgenden Rollen:<\/p>\n<pre><code class=\"language-markdown\">\"roles\" : [\n  {\n    \"role\" : \"assetsWriter\",\n    \"db\" : \"assets\"\n  }\n]<\/code><\/pre>\n<p>Durch die Operation <code>grantRolesToUser<\/code> erh\u00e4lt &#8222;productUser00&#8220; die Rolle <code>readWrite<\/code> in der Bestandsdatenbank und die Leserolle in der Produktdatenbank:<\/p>\n<pre><code class=\"language-markdown\">use products\ndb.runCommand({\n  grantRolesToUser: \"productUser00\",\n  roles: [\n    { role: \"readWrite\", db: \"stock\"},\n    \"read\"\n  ],\n  writeConcern: { w: \"majority\" , wtimeout: 2000 }\n})<\/code><\/pre>\n<p>Der Benutzer productUser00 in der Produktdatenbank besitzt nun die folgenden Rollen:<\/p>\n<pre><code class=\"language-markdown\">\"roles\" : [\n  {\n    \"role\" : \"assetsWriter\",\n    \"db\" : \"assets\"\n  },\n  {\n    \"role\" : \"readWrite\",\n    \"db\" : \"stock\"\n  },\n  {\n    \"role\" : \"read\",\n    \"db\" : \"products\"\n  }\n]<\/code><\/pre>\n<h5>usersInfo<\/h5>\n<p>Du kannst den Befehl <code>usersInfo<\/code> verwenden, um Informationen \u00fcber einen oder mehrere Benutzer zu erhalten. Hier ist die Syntax:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    usersInfo: &lt;various&gt;,\n    showCredentials: &lt;Boolean&gt;,\n    showCustomData: &lt;Boolean&gt;,\n    showPrivileges: &lt;Boolean&gt;,\n    showAuthenticationRestrictions: &lt;Boolean&gt;,\n    filter: &lt;document&gt;,\n    comment: &lt;any&gt; \n  }\n)\n{ usersInfo: &lt;various&gt; }<\/code><\/pre>\n<p>Was den Zugriff angeht, so k\u00f6nnen Benutzer immer ihre eigenen Informationen einsehen. Um die Daten eines anderen Benutzers einzusehen, muss der Benutzer, der den Befehl ausf\u00fchrt, \u00fcber die Aktion <code>viewUser<\/code> in der Datenbank des anderen Benutzers verf\u00fcgen.<\/p>\n<p>Wenn du den Befehl <code>userInfo<\/code> ausf\u00fchrst, kannst du je nach den angegebenen Optionen die folgenden Informationen erhalten:<\/p>\n<pre><code class=\"language-markdown\">{\n  \"users\" : [\n    {\n      \"_id\" : \"&lt;db&gt;.&lt;username&gt;\",\n      \"userId\" : &lt;UUID&gt;, \/\/ Starting in MongoDB 4.0.9\n      \"user\" : \"&lt;username&gt;\",\n      \"db\" : \"&lt;db&gt;\",\n      \"mechanisms\" : [ ... ],  \/\/ Starting in MongoDB 4.0\n      \"customData\" : &lt;document&gt;,\n      \"roles\" : [ ... ],\n      \"credentials\": { ... }, \/\/ only if showCredentials: true\n      \"inheritedRoles\" : [ ... ],  \/\/ only if showPrivileges: true or showAuthenticationRestrictions: true\n      \"inheritedPrivileges\" : [ ... ], \/\/ only if showPrivileges: true or showAuthenticationRestrictions: true\n      \"inheritedAuthenticationRestrictions\" : [ ] \/\/ only if showPrivileges: true or showAuthenticationRestrictions: true\n      \"authenticationRestrictions\" : [ ... ] \/\/ only if showAuthenticationRestrictions: true\n    },\n  ],\n  \"ok\" : 1\n} <\/code><\/pre>\n<p>Nachdem du nun eine allgemeine Vorstellung davon hast, was du mit dem Befehl <code>usersInfo<\/code> erreichen kannst, stellt sich nat\u00fcrlich die Frage, welche Befehle n\u00fctzlich sind, um bestimmte Benutzer oder mehrere Benutzer zu \u00fcberpr\u00fcfen<\/p>\n<p>Hier sind zwei praktische Beispiele, um das zu veranschaulichen:<br \/>\nUm die spezifischen Berechtigungen und Informationen f\u00fcr bestimmte Benutzer, aber nicht die Anmeldedaten, f\u00fcr den Benutzer &#8222;Anthony&#8220; in der Datenbank &#8222;office&#8220; einzusehen, f\u00fchre den folgenden Befehl aus:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    usersInfo:  { user: \"Anthony\", db: \"office\" },\n    showPrivileges: true\n  }\n)<\/code><\/pre>\n<p>Wenn du dir einen Benutzer in der aktuellen Datenbank ansehen willst, kannst du ihn nur namentlich erw\u00e4hnen. Wenn du dich zum Beispiel in der Datenbank &#8222;home&#8220; befindest und ein Benutzer namens &#8222;Timothy&#8220; in der Datenbank &#8222;home&#8220; existiert, kannst du den folgenden Befehl ausf\u00fchren:<\/p>\n<pre><code class=\"language-markdown\">db.getSiblingDB(\"home\").runCommand(\n  {\n    usersInfo:  \"Timothy\",\n    showPrivileges: true\n  }\n)<\/code><\/pre>\n<p>Als N\u00e4chstes kannst du ein Array verwenden, wenn du dir die Informationen f\u00fcr verschiedene Benutzer ansehen m\u00f6chtest. Du kannst entweder die optionalen Felder <code>showCredentials<\/code> und <code>showPrivileges<\/code> hinzuf\u00fcgen oder sie weglassen. So w\u00fcrde der Befehl aussehen:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand({\nusersInfo: [ { user: \"Anthony\", db: \"office\" }, { user: \"Timothy\", db: \"home\" } ],\n  showPrivileges: true\n})<\/code><\/pre>\n<h5>revokeRolesFromUser<\/h5>\n<p>Mit dem Befehl <code>revokeRolesFromUser<\/code> kannst du eine oder mehrere Rollen von einem Benutzer in der Datenbank entfernen, in der die Rollen vorhanden sind. Der Befehl <code>revokeRolesFromUser<\/code> hat die folgende Syntax:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    revokeRolesFromUser: \"&lt;user&gt;\",\n    roles: [\n      { role: \"&lt;role&gt;\", db: \"&lt;database&gt;\" } | \"&lt;role&gt;\",\n    ],\n    writeConcern: { &lt;write concern&gt; },\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>In der oben genannten Syntax kannst du im Feld <code>roles<\/code> sowohl benutzerdefinierte als auch eingebaute Rollen angeben. \u00c4hnlich wie beim Befehl <code>grantRolesToUser<\/code> kannst du die Rolle, die du widerrufen willst, in einem Dokument angeben oder ihren Namen verwenden.<\/p>\n<p>Um den Befehl <code>revokeRolesFromUser<\/code> erfolgreich ausf\u00fchren zu k\u00f6nnen, musst du die Aktion <code>revokeRole<\/code> auf der angegebenen Datenbank haben.<\/p>\n<p>Hier ist ein Beispiel, um die Sache zu verdeutlichen. Die Entit\u00e4t <code>productUser00<\/code> in der Produktdatenbank hatte die folgenden Rollen:<\/p>\n<pre><code class=\"language-markdown\">\"roles\" : [\n  {\n    \"role\" : \"assetsWriter\",\n    \"db\" : \"assets\"\n  },\n  {\n    \"role\" : \"readWrite\",\n    \"db\" : \"stock\"\n  },\n  {\n    \"role\" : \"read\",\n    \"db\" : \"products\"\n  }\n]<\/code><\/pre>\n<p>Mit dem folgenden Befehl <code>revokeRolesFromUser<\/code> werden zwei Rollen des Benutzers entfernt: die Rolle &#8222;Lesen&#8220; aus <code>products<\/code> und die Rolle <code>assetsWriter<\/code> aus der Datenbank &#8222;Assets&#8220;:<\/p>\n<pre><code class=\"language-markdown\">use products\ndb.runCommand( { revokeRolesFromUser: \"productUser00\",\n  roles: [\n    { role: \"AssetsWriter\", db: \"assets\" },\n    \"read\"\n  ],\n  writeConcern: { w: \"majority\" }\n} )<\/code><\/pre>\n<p>Der Benutzer &#8222;productUser00&#8220; in der Produktdatenbank hat jetzt nur noch eine Rolle:<\/p>\n<pre><code class=\"language-markdown\">\"roles\" : [\n  {\n    \"role\" : \"readWrite\",\n    \"db\" : \"stock\"\n  }\n]<\/code><\/pre>\n<h4>Rollenmanagement-Befehle<\/h4>\n<p>Rollen gew\u00e4hren Benutzern Zugriff auf Ressourcen. Mehrere integrierte Rollen k\u00f6nnen von Administratoren verwendet werden, um den Zugriff auf ein MongoDB-System zu steuern. Wenn die Rollen die gew\u00fcnschten Berechtigungen nicht abdecken, kannst du sogar noch weiter gehen und neue Rollen f\u00fcr eine bestimmte Datenbank erstellen.<\/p>\n<h5>dropRole<\/h5>\n<p>Mit dem Befehl <code>dropRole<\/code> kannst du eine benutzerdefinierte Rolle aus der Datenbank l\u00f6schen, auf der du den Befehl ausf\u00fchrst. Um diesen Befehl auszuf\u00fchren, verwendest du die folgende Syntax:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    dropRole: \"&lt;role&gt;\",\n    writeConcern: { &lt;write concern&gt; },\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>F\u00fcr eine erfolgreiche Ausf\u00fchrung musst du die Aktion <code>dropRole<\/code> auf der angegebenen Datenbank haben. Die folgenden Operationen w\u00fcrden die Rolle <code>writeTags<\/code> aus der Datenbank &#8222;Produkte&#8220; entfernen:<\/p>\n<pre><code class=\"language-markdown\">use products\ndb.runCommand(\n  {\n    dropRole: \"writeTags\",\n    writeConcern: { w: \"majority\" }\n  }\n)<\/code><\/pre>\n<h5>createRole<\/h5>\n<p>Mit dem Befehl <code>createRole<\/code> kannst du eine Rolle erstellen und ihre Berechtigungen festlegen. Die Rolle gilt f\u00fcr die Datenbank, f\u00fcr die du den Befehl ausf\u00fchrst. Der Befehl <code>createRole<\/code> w\u00fcrde einen Fehler bez\u00fcglich einer doppelten Rolle zur\u00fcckgeben, wenn die Rolle bereits in der Datenbank existiert.<\/p>\n<p>Um diesen Befehl auszuf\u00fchren, befolge die angegebene Syntax:<\/p>\n<pre><code class=\"language-markdown\">db.adminCommand(\n  {\n    createRole: \"&lt;new role&gt;\",\n    privileges: [\n      { resource: { &lt;resource&gt; }, actions: [ \"&lt;action&gt;\", ... ] },\n    ],\n    roles: [\n      { role: \"&lt;role&gt;\", db: \"&lt;database&gt;\" } | \"&lt;role&gt;\",\n    ],\n    authenticationRestrictions: [\n      {\n        clientSource: [\"&lt;IP&gt;\" | \"&lt;CIDR range&gt;\", ...],\n        serverAddress: [\"&lt;IP&gt;\" | \"&lt;CIDR range&gt;\", ...]\n      },\n    ],\n    writeConcern: &lt;write concern document&gt;,\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Die Berechtigungen einer Rolle gelten f\u00fcr die Datenbank, in der die Rolle erstellt wurde. Die Rolle kann Berechtigungen von anderen Rollen in ihrer Datenbank erben. Eine Rolle, die in der Datenbank &#8222;admin&#8220; erstellt wurde, kann z. B. Berechtigungen enthalten, die entweder f\u00fcr einen Cluster oder f\u00fcr alle Datenbanken gelten. Sie kann auch Berechtigungen von Rollen in anderen Datenbanken erben.<\/p>\n<p>Um eine Rolle in einer Datenbank zu erstellen, musst du zwei Dinge haben:<\/p>\n<ol>\n<li>Die Aktion <code>grantRole<\/code> auf dieser Datenbank, um die Berechtigungen f\u00fcr die neue Rolle und die Rollen, von denen sie erben soll, anzugeben.<\/li>\n<li>Die Aktion <code>createRole<\/code> f\u00fcr diese Datenbankressource.<\/li>\n<\/ol>\n<p>Mit dem folgenden <code>createRole<\/code> Befehl wird eine <code>clusterAdmin<\/code> Rolle in der Benutzerdatenbank erstellt:<\/p>\n<pre><code class=\"language-markdown\">db.adminCommand({ createRole: \"clusterAdmin\",\n  privileges: [\n    { resource: { cluster: true }, actions: [ \"addShard\" ] },\n    { resource: { db: \"config\", collection: \"\" }, actions: [ \"find\", \"remove\" ] },\n    { resource: { db: \"users\", collection: \"usersCollection\" }, actions: [ \"update\", \"insert\" ] },\n    { resource: { db: \"\", collection: \"\" }, actions: [ \"find\" ] }\n  ],\n  roles: [\n    { role: \"read\", db: \"user\" }\n  ],\n  writeConcern: { w: \"majority\" , wtimeout: 5000 }\n})<\/code><\/pre>\n<h5>grantRolesToRole<\/h5>\n<p>Mit dem Befehl <code>grantRolesToRole<\/code> kannst du einer benutzerdefinierten Rolle Rollen gew\u00e4hren. Der Befehl <code>grantRolesToRole<\/code> w\u00fcrde sich auf die Rollen in der Datenbank auswirken, in der der Befehl ausgef\u00fchrt wird.<\/p>\n<p>Dieser <code>grantRolesToRole<\/code> Befehl hat die folgende Syntax:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    grantRolesToRole: \"&lt;role&gt;\",\n    roles: [\n     { role: \"&lt;role&gt;\", db: \"&lt;database&gt;\" },\n    ],\n    writeConcern: { &lt;write concern&gt; },\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Die Zugriffsrechte sind \u00e4hnlich wie beim Befehl <code>grantRolesToUser<\/code> &#8211; f\u00fcr die ordnungsgem\u00e4\u00dfe Ausf\u00fchrung des Befehls ben\u00f6tigst du eine <code>grantRole<\/code> Aktion auf einer Datenbank.<\/p>\n<p>Im folgenden Beispiel kannst du den Befehl <code>grantRolesToUser<\/code> verwenden, um die Rolle <code>productsReader<\/code> in der Datenbank &#8222;Produkte&#8220; zu aktualisieren, damit sie die Rechte der Rolle <code>productsWriter<\/code> erbt:<\/p>\n<pre><code class=\"language-markdown\">use products\ndb.runCommand(\n  { \n    grantRolesToRole: \"productsReader\",\n    roles: [\n      \"productsWriter\"\n    ],\n    writeConcern: { w: \"majority\" , wtimeout: 5000 }\n  }\n)<\/code><\/pre>\n<h5>revokePrivilegesFromRole<\/h5>\n<p>Mit <code>revokePrivilegesFromRole<\/code> kannst du der benutzerdefinierten Rolle in der Datenbank, in der der Befehl ausgef\u00fchrt wird, die angegebenen Berechtigungen entziehen. Damit der Befehl korrekt ausgef\u00fchrt wird, musst du die folgende Syntax beachten:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    revokePrivilegesFromRole: \"&lt;role&gt;\",\n    privileges: [\n      { resource: { &lt;resource&gt; }, actions: [ \"&lt;action&gt;\", ... ] },\n    ],\n    writeConcern: &lt;write concern document&gt;,\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Um ein Privileg zu entziehen, muss das Muster &#8222;Ressourcendokument&#8220; mit dem Feld &#8222;Ressource&#8220; des betreffenden Privilegs \u00fcbereinstimmen. Das Feld &#8222;Aktionen&#8220; kann entweder eine genaue \u00dcbereinstimmung oder eine Teilmenge sein.<\/p>\n<p>Nehmen wir zum Beispiel die Rolle <code>manageRole<\/code> in der Produktdatenbank mit den folgenden Berechtigungen, die die Datenbank &#8222;Manager&#8220; als Ressource angeben:<\/p>\n<pre><code class=\"language-markdown\">{\n  \"resource\" : {\n    \"db\" : \"managers\",\n    \"collection\" : \"\"\n  },\n  \"actions\" : [\n    \"insert\",\n    \"remove\"\n  ]\n}<\/code><\/pre>\n<p>Du kannst die Aktionen &#8222;Einf\u00fcgen&#8220; oder &#8222;Entfernen&#8220; nicht nur f\u00fcr eine Sammlung in der Managerdatenbank widerrufen. Die folgenden Operationen f\u00fchren zu keiner \u00c4nderung in der Rolle:<\/p>\n<pre><code class=\"language-markdown\">use managers\ndb.runCommand(\n  {\n    revokePrivilegesFromRole: \"manageRole\",\n    privileges: [\n      {\n        resource : {\n          db : \"managers\",\n          collection : \"kiosks\"\n        },\n        actions : [\n          \"insert\",\n          \"remove\"\n        ]\n      }\n    ]\n  }\n)<\/code><\/pre>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    revokePrivilegesFromRole: \"manageRole\",\n    privileges:\n      [\n        {\n          resource : {\n          db : \"managers\",\n          collection : \"kiosks\"\n        },\n        actions : [\n          \"insert\"\n        ]\n      }\n    ]\n  }\n)<\/code><\/pre>\n<p>Um die Aktionen &#8222;Einf\u00fcgen&#8220; und\/oder &#8222;Entfernen&#8220; aus der Rolle <code>manageRole<\/code> zu widerrufen, musst du das Ressourcendokument genau abgleichen. Der folgende Vorgang widerruft zum Beispiel nur die Aktion &#8222;Entfernen&#8220; des bestehenden Privilegs:<\/p>\n<pre><code class=\"language-markdown\">use managers\ndb.runCommand(\n  {\n    revokePrivilegesFromRole: \"manageRole\",\n    privileges:\n      [\n        {\n          resource : {\n            db : \"managers\",\n            collection : \"\"\n        },\n        actions : [ \"remove\" ]\n      }\n    ]\n  }\n)<\/code><\/pre>\n<p>Der folgende Vorgang entfernt mehrere Berechtigungen aus der Rolle &#8222;F\u00fchrungskraft&#8220; in der Managerdatenbank:<\/p>\n<pre><code class=\"language-markdown\">use managers\ndb.runCommand(\n  {\n    revokePrivilegesFromRole: \"executive\",\n    privileges: [\n      {\n        resource: { db: \"managers\", collection: \"\" },\n        actions: [ \"insert\", \"remove\", \"find\" ]\n      },\n      {\n        resource: { db: \"managers\", collection: \"partners\" },\n        actions: [ \"update\" ]\n      }\n    ],\n    writeConcern: { w: \"majority\" }\n    }\n)<\/code><\/pre>\n<h5>rolesInfo<\/h5>\n<p>Der Befehl <code>rolesInfo<\/code> liefert Informationen zu den Berechtigungen und der Vererbung der angegebenen Rollen, einschlie\u00dflich der eingebauten und benutzerdefinierten Rollen. Du kannst auch den Befehl <code>rolesInfo<\/code> verwenden, um alle Rollen abzurufen, die f\u00fcr eine Datenbank gelten.<\/p>\n<p>F\u00fcr eine korrekte Ausf\u00fchrung musst du die folgende Syntax beachten:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    rolesInfo: { role: &lt;name&gt;, db: &lt;db&gt; },\n    showPrivileges: &lt;Boolean&gt;,\n    showBuiltinRoles: &lt;Boolean&gt;,\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Um Informationen zu einer Rolle aus der aktuellen Datenbank zu erhalten, kannst du ihren Namen wie folgt angeben:<\/p>\n<pre><code class=\"language-markdown\">{ rolesInfo: \"&lt;rolename&gt;\" }<\/code><\/pre>\n<p>Um Informationen f\u00fcr eine Rolle aus einer anderen Datenbank zu erhalten, kannst du die Rolle in einem Dokument erw\u00e4hnen, in dem die Rolle und die Datenbank erw\u00e4hnt werden:<\/p>\n<pre><code class=\"language-markdown\">{ rolesInfo: { role: \"&lt;rolename&gt;\", db: \"&lt;database&gt;\" } }<\/code><\/pre>\n<p>Der folgende Befehl gibt zum Beispiel die Informationen zur Rollenvererbung f\u00fcr die Rolle Executive in der Managerdatenbank zur\u00fcck:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n   {\n      rolesInfo: { role: \"executive\", db: \"managers\" }\n   }\n)<\/code><\/pre>\n<p>Der n\u00e4chste Befehl gibt die Informationen zur Rollenvererbung zur\u00fcck: <code>accountManager<\/code> in der Datenbank, in der der Befehl ausgef\u00fchrt wird:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n   {\n      rolesInfo: \"accountManager\"\n   }\n)<\/code><\/pre>\n<p>Der folgende Befehl gibt sowohl die Berechtigungen als auch die Rollenvererbung f\u00fcr die Rolle &#8222;F\u00fchrungskraft&#8220; zur\u00fcck, wie sie in der Managerdatenbank definiert ist:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n   {\n     rolesInfo: { role: \"executive\", db: \"managers\" },\n     showPrivileges: true\n   }\n)<\/code><\/pre>\n<p>Um mehrere Rollen anzugeben, kannst du ein Array verwenden. Du kannst auch jede Rolle in dem Array als String oder Dokument angeben.<\/p>\n<p>Du solltest eine Zeichenkette nur dann verwenden, wenn die Rolle in der Datenbank existiert, in der der Befehl ausgef\u00fchrt wird:<\/p>\n<pre><code class=\"language-markdown\">{\n  rolesInfo: [\n    \"&lt;rolename&gt;\",\n    { role: \"&lt;rolename&gt;\", db: \"&lt;database&gt;\" },\n  ]\n}<\/code><\/pre>\n<p>Der folgende Befehl gibt zum Beispiel Informationen f\u00fcr drei Rollen in drei verschiedenen Datenbanken zur\u00fcck:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n   {\n    rolesInfo: [\n      { role: \"executive\", db: \"managers\" },\n      { role: \"accounts\", db: \"departments\" },\n      { role: \"administrator\", db: \"products\" }\n    ]\n  }\n)<\/code><\/pre>\n<p>Du kannst sowohl die Berechtigungen als auch die Rollenvererbung wie folgt abrufen:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    rolesInfo: [\n      { role: \"executive\", db: \"managers\" },\n      { role: \"accounts\", db: \"departments\" },\n      { role: \"administrator\", db: \"products\" }\n    ],\n    showPrivileges: true\n  }\n)<\/code><\/pre>\n<h2>MongoDB-Dokumente f\u00fcr bessere Leistung einbetten<\/h2>\n<p>Mit Dokumentendatenbanken wie MongoDB kannst du dein Schema nach deinen Bed\u00fcrfnissen definieren. Um optimale Schemas in MongoDB zu erstellen, kannst du die Dokumente verschachteln. Anstatt deine Anwendung an ein Datenmodell anzupassen, kannst du also ein Datenmodell erstellen, das zu deinem Anwendungsfall passt.<\/p>\n<p>Mit eingebetteten Dokumenten kannst du <a href=\"https:\/\/kinqsta.com\/de\/blog\/mysql-sicherst-database\/\">zusammengeh\u00f6rige Daten speichern<\/a>, auf die du gemeinsam zugreifst. Wenn du Schemas f\u00fcr MongoDB entwirfst, empfiehlt es sich, Dokumente standardm\u00e4\u00dfig einzubetten. Verwende datenbank- oder anwendungsseitige Joins und Referenzen nur dann, wenn sie sinnvoll sind.<\/p>\n<p>Sorge daf\u00fcr, dass die Arbeitslast ein Dokument so oft wie n\u00f6tig abrufen kann. Gleichzeitig sollte das Dokument auch alle Daten enthalten, die es braucht. Dies ist entscheidend f\u00fcr die au\u00dfergew\u00f6hnliche Leistung deiner Anwendung.<\/p>\n<p>Im Folgenden findest du ein paar verschiedene Muster f\u00fcr die Einbettung von Dokumenten:<\/p>\n<h3>Muster f\u00fcr eingebettete Dokumente<\/h3>\n<p>Mit diesem Muster kannst du selbst komplizierte Unterstrukturen in die Dokumente einbetten, mit denen sie verwendet werden. Wenn du zusammenh\u00e4ngende Daten in ein einziges Dokument einbettest, kannst du die Anzahl der Lesevorg\u00e4nge verringern, die n\u00f6tig sind, um Daten zu erhalten. Generell solltest du dein Schema so strukturieren, dass deine Anwendung alle ben\u00f6tigten Informationen in einem einzigen Lesevorgang erh\u00e4lt. Daher gilt hier die Regel: <strong>Was zusammen verwendet wird, sollte auch zusammen gespeichert werden<\/strong>.<\/p>\n<h3>Eingebettetes Subset-Muster<\/h3>\n<p>Das eingebettete Teilmengenmuster ist ein Mischfall. Du verwendest es f\u00fcr eine separate Sammlung einer langen Liste zusammengeh\u00f6riger Elemente, von denen du einige zur Anzeige bereithalten kannst.<\/p>\n<p>Hier ist ein Beispiel mit einer Liste von Filmkritiken:<\/p>\n<pre><code class=\"language-markdown\">&gt; db.movie.findOne()\n{   \n  _id: 321475,   \n  title: \"The Dark Knight\"\n}  \n&gt; db.review.find({movie_id: 321475})\n{   \n  _id: 264579,   \n  movie_id: 321475,   \n  stars: 4   \n  text: \"Amazing\"   \n}\n{   \n  _id: 375684,   \n  movie_id: 321475,   \n  stars:5,   \n  text: \"Mindblowing\"\n}<\/code><\/pre>\n<p>Stell dir vor, es gibt tausend \u00e4hnliche Kritiken, aber du willst nur die letzten beiden anzeigen, wenn du einen Film zeigst. In diesem Fall ist es sinnvoll, diese Teilmenge als Liste im Filmdokument zu speichern:<\/p>\n<pre><code class=\"language-markdown\">&gt; db.movie.findOne({_id: 321475})   \n{   \n  _id: 321475,   \n  title: \"The Dark Knight\",   \n  recent_reviews: [   \n    {_id: 264579, stars: 4, text: \"Amazing\"},   \n    {_id: 375684, stars: 5, text: \"Mindblowing\"}   \n  ]   \n}<\/code><\/pre>\n<p>Einfach ausgedr\u00fcckt: Wenn du routinem\u00e4\u00dfig auf eine Teilmenge verwandter Artikel zugreifst, solltest du sie einbetten.<\/p>\n<h3>Unabh\u00e4ngiger Zugriff<\/h3>\n<p>Vielleicht m\u00f6chtest du Unterdokumente in ihrer eigenen Sammlung speichern, um sie von ihrer \u00fcbergeordneten Sammlung zu trennen.<\/p>\n<p>Nehmen wir zum Beispiel die Produktlinie eines Unternehmens. Wenn das Unternehmen nur eine kleine Anzahl von Produkten verkauft, m\u00f6chtest du sie vielleicht im Unternehmensdokument speichern. Wenn du sie aber unternehmens\u00fcbergreifend wiederverwenden oder direkt auf sie zugreifen m\u00f6chtest, solltest du sie ebenfalls in ihrer Sammlung speichern.<\/p>\n<p>Wenn du eine Entit\u00e4t eigenst\u00e4ndig bearbeitest oder auf sie zugreifst, solltest du sie in einer Sammlung separat speichern, um eine optimale Vorgehensweise zu gew\u00e4hrleisten.<\/p>\n<h3>Unbegrenzte Listen<\/h3>\n<p>Kurze Listen mit zusammengeh\u00f6rigen Informationen in ihrem Dokument zu speichern, hat einen Nachteil. Wenn deine Liste unkontrolliert weiter w\u00e4chst, solltest du sie nicht in einem einzigen Dokument speichern. Das liegt daran, dass du sie nicht sehr lange unterst\u00fctzen kannst.<\/p>\n<p>Hierf\u00fcr gibt es zwei Gr\u00fcnde. Erstens gibt es bei MongoDB eine Gr\u00f6\u00dfenbeschr\u00e4nkung f\u00fcr ein einzelnes Dokument. Zweitens: Wenn du zu h\u00e4ufig auf das Dokument zugreifst, f\u00fchrt das zu einer unkontrollierten Speichernutzung.<\/p>\n<p>Einfach ausgedr\u00fcckt: Wenn eine Liste anf\u00e4ngt, unbegrenzt zu wachsen, solltest du eine Sammlung anlegen, um sie separat zu speichern.<\/p>\n<h3>Erweitertes Referenzmuster<\/h3>\n<p>Das erweiterte Referenzmuster \u00e4hnelt dem Teilmengenmuster. Es optimiert ebenfalls Informationen, auf die du regelm\u00e4\u00dfig zugreifst, um sie im Dokument zu speichern.<\/p>\n<p>Hier wird statt einer Liste ein Verweis auf ein anderes Dokument verwendet, das sich in derselben Sammlung befindet. Gleichzeitig werden auch einige Felder des anderen Dokuments gespeichert, damit du jederzeit darauf zugreifen kannst.<\/p>\n<p>Zum Beispiel:<\/p>\n<pre><code class=\"language-markdown\">&gt; db.movie.findOne({_id: 245434})\n{   \n  _id: 245434,   \n  title: \"Mission Impossible 4 - Ghost Protocol\",   \n  studio_id: 924935,   \n  studio_name: \"Paramount Pictures\"   \n}<\/code><\/pre>\n<p>Wie du sehen kannst, wird die &#8222;studio_id&#8220; gespeichert, damit du weitere Informationen \u00fcber das Studio, das den Film produziert hat, nachschlagen kannst. Aber auch der Name des Studios wird der Einfachheit halber in dieses Dokument kopiert.<\/p>\n<p>Um Informationen aus ge\u00e4nderten Dokumenten regelm\u00e4\u00dfig einzubinden, solltest du die Dokumente, in die du die Informationen kopiert hast, immer aktualisieren, wenn sie ge\u00e4ndert werden. Mit anderen Worten: Wenn du regelm\u00e4\u00dfig auf einige Felder eines referenzierten Dokuments zugreifst, bette sie ein.<\/p>\n<h2>Wie man MongoDB \u00fcberwacht<\/h2>\n<p>Mit <a href=\"https:\/\/kinqsta.com\/de\/blog\/apm-tools\/\">Monitoring-Tools<\/a> wie <a href=\"https:\/\/kinqsta.com\/de\/apm-tool\/\">Kinsta APM<\/a> kannst du lange API-Aufrufe, langsame Datenbankabfragen und lange externe URL-Anfragen debuggen, um nur einige Beispiele zu nennen. Du kannst sogar Befehle einsetzen, um die Datenbankleistung zu verbessern. Au\u00dferdem kannst du mit ihnen den <a href=\"https:\/\/kinqsta.com\/de\/blog\/wordpress-datenbankproblemen-repariert\/\">Gesundheitszustand deiner Datenbankinstanzen<\/a> \u00fcberpr\u00fcfen.<\/p>\n<h3>Warum solltest du MongoDB-Datenbanken \u00fcberwachen?<\/h3>\n<p>Ein wichtiger Aspekt bei der <a href=\"https:\/\/kinqsta.com\/de\/mykinsta\/\">Planung der Datenbankverwaltung<\/a> ist die \u00dcberwachung der Leistung und des Zustands deines Clusters. MongoDB Atlas \u00fcbernimmt den Gro\u00dfteil des Verwaltungsaufwands durch seine Fehlertoleranz- und Skalierungsf\u00e4higkeiten.<\/p>\n<p>Trotzdem m\u00fcssen die Nutzer wissen, wie man Cluster \u00fcberwacht. Sie sollten auch wissen, wie sie skalieren oder Anpassungen vornehmen k\u00f6nnen, bevor es zu einer Krise kommt.<\/p>\n<p>Mit der \u00dcberwachung von MongoDB-Datenbanken kannst du:<\/p>\n<ul>\n<li>Beobachte die Auslastung der Ressourcen.<\/li>\n<li>Verstehe die aktuelle Kapazit\u00e4t deiner Datenbank.<\/li>\n<li>Reagiere und erkenne Probleme in Echtzeit, um deinen Application Stack zu verbessern.<\/li>\n<li>Beobachte das Vorhandensein von Leistungsproblemen und abnormalem Verhalten.<\/li>\n<li>Richte dich nach deinen Governance-\/Datenschutz- und Service Level Agreement (SLA)-Anforderungen.<\/li>\n<\/ul>\n<h3>Wichtige Metriken zur \u00dcberwachung<\/h3>\n<p>Bei der \u00dcberwachung von MongoDB gibt es vier wichtige Aspekte, die du im Auge behalten musst:<\/p>\n<h4>MongoDB Hardware-Metriken<\/h4>\n<p>Hier sind die wichtigsten Metriken zur \u00dcberwachung der Hardware:<\/p>\n<h5>Normalisierte Prozess-CPU<\/h5>\n<p>Sie ist definiert als der prozentuale Anteil der Zeit, den die CPU f\u00fcr die Anwendungssoftware zur Aufrechterhaltung des MongoDB-Prozesses aufwendet.<\/p>\n<p>Du kannst diesen Wert in einem Bereich von 0-100% skalieren, indem du ihn durch die Anzahl der CPU-Kerne teilst. Dazu geh\u00f6rt auch die CPU, die von Modulen wie dem Kernel und dem Benutzer genutzt wird.<\/p>\n<p>Eine hohe Kernel-CPU zeigt an, dass die CPU durch die Operationen des Betriebssystems ausgelastet ist. Der Benutzer, der mit MongoDB-Operationen verbunden ist, k\u00f6nnte jedoch die Hauptursache f\u00fcr die CPU-Ersch\u00f6pfung sein.<\/p>\n<h5>Normalisierte System-CPU<\/h5>\n<p>Dies ist der prozentuale Anteil der Zeit, den die CPU f\u00fcr Systemaufrufe zur Bedienung dieses MongoDB-Prozesses verwendet. Du kannst den Wert in einem Bereich von 0-100% einstellen, indem du ihn durch die Anzahl der CPU-Kerne teilst. Er umfasst auch die CPU, die von Modulen wie iowait, user, kernel, steal usw. verwendet wird.<\/p>\n<p>Eine hohe User-CPU oder eine hohe Kernel-CPU kann eine Ersch\u00f6pfung der CPU durch MongoDB-Operationen (Software) anzeigen. Ein hoher Iowait-Wert kann mit der Ersch\u00f6pfung des Speichers zusammenh\u00e4ngen, die zu einer Ersch\u00f6pfung der CPU f\u00fchrt.<\/p>\n<h5>Festplatten-IOPS<\/h5>\n<p>Festplatten-IOPS sind die durchschnittlich verbrauchten IO-Operationen pro Sekunde auf der Festplattenpartition von MongoDB.<\/p>\n<h5>Festplatten-Latenz<\/h5>\n<p>Dies ist die Lese- und Schreiblatenz der Festplattenpartition in Millisekunden in MongoDB. Hohe Werte (&gt;500 ms) zeigen, dass die Speicherschicht die Leistung von MongoDB beeintr\u00e4chtigen kann.<\/p>\n<h5>Systemspeicher<\/h5>\n<p>Der Systemspeicher gibt an, wie viele Bytes des physischen Speichers genutzt werden und wie viel freier Speicherplatz verf\u00fcgbar ist.<\/p>\n<p>Die verf\u00fcgbare Metrik gibt die Anzahl der Bytes des verf\u00fcgbaren Systemspeichers an. Du kannst dies nutzen, um neue Anwendungen ohne Swapping auszuf\u00fchren.<\/p>\n<h5>Freier Speicherplatz<\/h5>\n<p>Dies ist die Summe der freien Bytes auf der Festplattenpartition von MongoDB. MongoDB Atlas bietet automatische Skalierungsfunktionen, die auf dieser Metrik basieren.<\/p>\n<h5>Swap-Nutzung<\/h5>\n<p>Du kannst ein Swap-Nutzungsdiagramm verwenden, um zu beschreiben, wie viel Speicher auf dem Swap-Ger\u00e4t platziert wird. Eine stark genutzte Metrik in diesem Diagramm zeigt, dass der Swap-Speicher ausgelastet ist. Dies zeigt, dass der Speicher f\u00fcr die aktuelle Arbeitslast nicht ausreichend bereitgestellt wird.<\/p>\n<h4>Metriken f\u00fcr Verbindung und Betrieb des MongoDB-Clusters<\/h4>\n<p>Hier sind die wichtigsten Metriken f\u00fcr Operation und Connection Metrics:<\/p>\n<h5>Ausf\u00fchrungszeiten der Operationen<\/h5>\n<p>Die durchschnittliche Ausf\u00fchrungszeit von Operationen (Schreib- und Lesevorg\u00e4nge), die \u00fcber den ausgew\u00e4hlten Zeitraum durchgef\u00fchrt wurden.<\/p>\n<h5>Operationsz\u00e4hler<\/h5>\n<p>Dies ist die durchschnittliche Anzahl der ausgef\u00fchrten Operationen pro Sekunde im ausgew\u00e4hlten Stichprobenzeitraum. Das Diagramm\/die Metrik Opcounters zeigt die Aufschl\u00fcsselung der Operationstypen und der Geschwindigkeit f\u00fcr die Instanz.<\/p>\n<h5>Verbindungen<\/h5>\n<p>Diese Metrik bezieht sich auf die Anzahl der offenen Verbindungen zur Instanz. Hohe Spitzen oder Zahlen k\u00f6nnen auf eine suboptimale Verbindungsstrategie hindeuten, entweder von einem nicht reagierenden Server oder von der Client-Seite.<\/p>\n<h5>Query Targeting und Query Executors<\/h5>\n<p>Dies ist die durchschnittliche Rate pro Sekunde \u00fcber den ausgew\u00e4hlten Stichprobenzeitraum der gescannten Dokumente. Bei Query Executors ist dies die Rate w\u00e4hrend der Bewertung des Abfrageplans und der Abfragen. Query Targeting zeigt das Verh\u00e4ltnis zwischen der Anzahl der gescannten Dokumente und der Anzahl der zur\u00fcckgegebenen Dokumente.<\/p>\n<p>Ein hohes Zahlenverh\u00e4ltnis deutet auf suboptimale Vorg\u00e4nge hin. Bei diesen Vorg\u00e4ngen werden viele Dokumente gescannt, um einen kleineren Teil zur\u00fcckzugeben.<\/p>\n<h5>Scannen und Reihenfolge<\/h5>\n<p>Sie beschreibt die durchschnittliche Rate pro Sekunde \u00fcber die gew\u00e4hlte Stichprobenzeit der Abfragen. Sie gibt sortierte Ergebnisse zur\u00fcck, die die Sortieroperation nicht \u00fcber einen Index ausf\u00fchren k\u00f6nnen.<\/p>\n<h5>Warteschlangen<\/h5>\n<p>Warteschlangen k\u00f6nnen die Anzahl der Operationen beschreiben, die auf eine Sperre warten, entweder zum Schreiben oder zum Lesen. Hohe Warteschlangen k\u00f6nnen ein Hinweis auf ein nicht optimales Schema-Design sein. Sie k\u00f6nnen auch auf konkurrierende Schreibpfade hinweisen, die zu einem starken Wettbewerb um die Datenbankressourcen f\u00fchren.<\/p>\n<h4>Metriken f\u00fcr die MongoDB-Replikation<\/h4>\n<p>Hier sind die wichtigsten Metriken zur \u00dcberwachung der Replikation:<\/p>\n<h5>Replikations-Oplog-Fenster<\/h5>\n<p>Diese Metrik gibt die ungef\u00e4hre Anzahl der Stunden an, die im Replikations-Oplog der Prim\u00e4rdatenbank verf\u00fcgbar sind. Wenn die sekund\u00e4re Replikation mehr als diesen Wert unterschreitet, kann sie nicht mithalten und muss vollst\u00e4ndig neu synchronisiert werden.<\/p>\n<h5>Replikationsverz\u00f6gerung<\/h5>\n<p>Der Replikationsr\u00fcckstand ist definiert als die ungef\u00e4hre Anzahl von Sekunden, die ein sekund\u00e4rer Knoten bei Schreibvorg\u00e4ngen hinter dem prim\u00e4ren zur\u00fcckliegt. Ein hoher Replikationsr\u00fcckstand deutet darauf hin, dass der sekund\u00e4re Knoten Schwierigkeiten mit der Replikation hat. Das kann sich auf die Latenzzeit deines Vorgangs auswirken, da es sich um Lese-\/Schreibvorg\u00e4nge handelt.<\/p>\n<h5>Replikationsspielraum<\/h5>\n<p>Diese Kennzahl bezieht sich auf die Differenz zwischen dem Oplog-Fenster der prim\u00e4ren Replikation und der Replikationsverz\u00f6gerung der sekund\u00e4ren. Wenn dieser Wert auf Null sinkt, kann dies dazu f\u00fchren, dass die Sekund\u00e4rreplikation in den RECOVERING-Modus geht.<\/p>\n<h5>Opcounters &#8211; repl<\/h5>\n<p>Opcounters &#8211; repl ist definiert als die durchschnittliche Rate der Replikationsvorg\u00e4nge, die pro Sekunde f\u00fcr den gew\u00e4hlten Stichprobenzeitraum ausgef\u00fchrt werden. Mit opcounters &#8211; graph\/metric kannst du dir die Geschwindigkeit der Operationen und die Aufschl\u00fcsselung der Operationstypen f\u00fcr die angegebene Instanz ansehen.<\/p>\n<h5>Oplog GB\/Stunde<\/h5>\n<p>Dies ist die durchschnittliche Anzahl der Gigabytes an Oplog, die die Prim\u00e4rinstanz pro Stunde erzeugt. Unerwartet hohe Oplog-Mengen k\u00f6nnen auf eine unzureichende Schreiblast oder ein Problem beim Schema-Design hinweisen.<\/p>\n<h3>MongoDB Tools zur Leistungs\u00fcberwachung<\/h3>\n<p>MongoDB verf\u00fcgt \u00fcber integrierte Benutzeroberfl\u00e4chen-Tools im Cloud Manager, Atlas und Ops Manager zur Leistungs\u00fcberwachung. Dar\u00fcber hinaus gibt es einige unabh\u00e4ngige Befehle und Tools, mit denen du dir die Rohdaten ansehen kannst. Wir stellen dir einige Tools vor, die du von einem Host aus ausf\u00fchren kannst, der Zugriff und die entsprechenden Rollen hat, um deine Umgebung zu \u00fcberpr\u00fcfen:<\/p>\n<h4>mongotop<\/h4>\n<p>Mit diesem Befehl kannst du verfolgen, wie viel Zeit eine MongoDB-Instanz mit dem Schreiben und Lesen von Daten pro Collection verbringt. Verwende die folgende Syntax:<\/p>\n<pre><code class=\"language-markdown\">mongotop &lt;options&gt; &lt;connection-string&gt; &lt;polling-interval in seconds&gt;<\/code><\/pre>\n<h4>rs.status()<\/h4>\n<p>Dieser Befehl gibt den Status des Replikatsets zur\u00fcck. Er wird aus der Sicht des Mitglieds ausgef\u00fchrt, in dem die Methode ausgef\u00fchrt wird.<\/p>\n<h4>mongostat<\/h4>\n<p>Mit dem Befehl <code>mongostat<\/code> kannst du dir einen schnellen \u00dcberblick \u00fcber den Status deiner MongoDB-Serverinstanz verschaffen. F\u00fcr eine optimale Ausgabe kannst du damit eine einzelne Instanz auf ein bestimmtes Ereignis hin \u00fcberwachen, da es eine Echtzeitansicht bietet.<\/p>\n<p>Mit diesem Befehl kannst du grundlegende Serverstatistiken wie Warteschlangen f\u00fcr Sperren, Aufschl\u00fcsselung von Operationen, MongoDB-Speicherstatistiken und Verbindungen\/Netzwerke \u00fcberwachen:<\/p>\n<pre><code class=\"language-markdown\">mongostat &lt;options&gt; &lt;connection-string&gt; &lt;polling interval in seconds&gt;<\/code><\/pre>\n<h4>dbStats<\/h4>\n<p>Dieser Befehl liefert Speicherstatistiken f\u00fcr eine bestimmte Datenbank, z. B. die Anzahl der Indizes und ihre Gr\u00f6\u00dfe, die Gesamtdaten der Sammlung im Vergleich zur Speichergr\u00f6\u00dfe und sammlungsbezogene Statistiken (Anzahl der Sammlungen und Dokumente).<\/p>\n<h4>db.serverStatus()<\/h4>\n<p>Mit dem Befehl <code>db.serverStatus()<\/code> kannst du dir einen \u00dcberblick \u00fcber den Zustand der Datenbank verschaffen. Du erh\u00e4ltst ein Dokument mit den aktuellen Z\u00e4hlern der Instanzmetrik. F\u00fchre diesen Befehl in regelm\u00e4\u00dfigen Abst\u00e4nden aus, um Statistiken \u00fcber die Instanz zusammenzustellen.<\/p>\n<h4>collStats<\/h4>\n<p>Der Befehl <code>collStats<\/code> sammelt Statistiken, die denen von <code>dbStats<\/code> auf der Ebene der Sammlung \u00e4hneln. Die Ausgabe besteht aus der Anzahl der Objekte in der Sammlung, dem von der Sammlung belegten Speicherplatz, der Gr\u00f6\u00dfe der Sammlung und Informationen zu den Indizes f\u00fcr eine bestimmte Sammlung.<\/p>\n<p>Mit all diesen Befehlen kannst du Echtzeitberichte und -\u00fcberwachungen des Datenbankservers erstellen, mit denen du die Leistung und Fehler der Datenbank \u00fcberwachen und fundierte Entscheidungen zur Verbesserung der Datenbank treffen kannst.<\/p>\n<h2>So l\u00f6schst du eine MongoDB-Datenbank<\/h2>\n<p>Um eine in MongoDB erstellte Datenbank zu l\u00f6schen, musst du dich \u00fcber das Schl\u00fcsselwort use mit ihr verbinden.<\/p>\n<p>Angenommen, du hast eine Datenbank mit dem Namen &#8222;Engineers&#8220; erstellt. Um dich mit der Datenbank zu verbinden, verwendest du den folgenden Befehl:<\/p>\n<pre><code class=\"language-markdown\">use Engineers<\/code><\/pre>\n<p>Als N\u00e4chstes gibst du <code>db.dropDatabase()<\/code> ein, um diese Datenbank zu l\u00f6schen. Nach der Ausf\u00fchrung kannst du das folgende Ergebnis erwarten:<\/p>\n<pre><code class=\"language-markdown\">{ \"dropped\"  :  \"Engineers\", \"ok\" : 1 }<\/code><\/pre>\n<p>Du kannst den Befehl <code>showdbs<\/code> ausf\u00fchren, um zu \u00fcberpr\u00fcfen, ob die Datenbank noch existiert.<\/p>\n<h2>Zusammenfassung<\/h2>\n<p>Um das Beste aus MongoDB herauszuholen, musst du die Grundlagen gut verstehen. Deshalb ist es wichtig, dass du MongoDB-Datenbanken wie deine Westentasche kennst. Dazu musst du dich zun\u00e4chst mit den Methoden zur <a href=\"https:\/\/kinqsta.com\/de\/devkinsta\/\">Erstellung einer Datenbank<\/a> vertraut machen.<br \/>\n<br \/>\nIn diesem Artikel beleuchten wir die verschiedenen Methoden, mit denen du eine Datenbank in MongoDB erstellen kannst, und beschreiben anschlie\u00dfend einige raffinierte MongoDB-Befehle, mit denen du den \u00dcberblick \u00fcber deine Datenbanken beh\u00e4ltst. Abschlie\u00dfend gehen wir darauf ein, wie du eingebettete Dokumente und Tools zur Leistungs\u00fcberwachung in MongoDB nutzen kannst, um sicherzustellen, dass deine Arbeitsabl\u00e4ufe mit h\u00f6chster Effizienz funktionieren.<\/p>\n<p>Was h\u00e4ltst du von diesen MongoDB-Befehlen? Haben wir einen Aspekt oder eine Methode ausgelassen, die du hier gerne gesehen h\u00e4ttest? Lass es uns in den Kommentaren wissen!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Je nachdem, welche Anforderungen du an deine Software stellst, hast du vielleicht Flexibilit\u00e4t, Skalierbarkeit, Leistung oder Geschwindigkeit als Priorit\u00e4t. Daher sind Entwickler und Unternehmen oft verwirrt, &#8230;<\/p>\n","protected":false},"author":117,"featured_media":55727,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[242,721,276,28],"topic":[991],"class_list":["post-55726","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-database","tag-mongodb","tag-web-development","tag-webdev","topic-web-entwicklungs-tools"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Wie man eine MongoDB-Datenbank erstellt: 6 wichtige Aspekte, die du kennen solltest<\/title>\n<meta name=\"description\" content=\"Um MongoDB besser zu verstehen, musst du wissen, wie du Datenbanken in MongoDB erstellst, angefangen mit dem Befehl MongoDB Datenbank erstellen.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wie man eine MongoDB-Datenbank erstellt: 6 wichtige Aspekte, die du kennen solltest\" \/>\n<meta property=\"og:description\" content=\"Um MongoDB besser zu verstehen, musst du wissen, wie du Datenbanken in MongoDB erstellst, angefangen mit dem Befehl MongoDB Datenbank erstellen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-08T08:56:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-18T08:19:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/11\/mongodb-create-database.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Salman Ravoof\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Um MongoDB besser zu verstehen, musst du wissen, wie du Datenbanken in MongoDB erstellst, angefangen mit dem Befehl MongoDB Datenbank erstellen.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/11\/mongodb-create-database.png\" \/>\n<meta name=\"twitter:creator\" content=\"@salmanravoof\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Salman Ravoof\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"31\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/\"},\"author\":{\"name\":\"Salman Ravoof\",\"@id\":\"https:\/\/kinqsta.com\/de\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987\"},\"headline\":\"Wie man eine MongoDB-Datenbank erstellt: 6 wichtige Aspekte, die du kennen solltest\",\"datePublished\":\"2022-11-08T08:56:28+00:00\",\"dateModified\":\"2023-08-18T08:19:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/\"},\"wordCount\":5872,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/11\/mongodb-create-database.png\",\"keywords\":[\"database\",\"MongoDB\",\"web development\",\"webdev\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/\",\"url\":\"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/\",\"name\":\"Wie man eine MongoDB-Datenbank erstellt: 6 wichtige Aspekte, die du kennen solltest\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/11\/mongodb-create-database.png\",\"datePublished\":\"2022-11-08T08:56:28+00:00\",\"dateModified\":\"2023-08-18T08:19:24+00:00\",\"description\":\"Um MongoDB besser zu verstehen, musst du wissen, wie du Datenbanken in MongoDB erstellst, angefangen mit dem Befehl MongoDB Datenbank erstellen.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/11\/mongodb-create-database.png\",\"contentUrl\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/11\/mongodb-create-database.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Webentwicklungs-Tools\",\"item\":\"https:\/\/kinqsta.com\/de\/thema\/web-entwicklungs-tools\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Wie man eine MongoDB-Datenbank erstellt: 6 wichtige Aspekte, die du kennen solltest\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/de\/#website\",\"url\":\"https:\/\/kinqsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinqsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/de\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987\",\"name\":\"Salman Ravoof\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinqsta.com\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g\",\"caption\":\"Salman Ravoof\"},\"description\":\"Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.\",\"sameAs\":[\"https:\/\/salmanravoof.com\",\"https:\/\/www.linkedin.com\/in\/salman-ravoof-5a749133\/\",\"https:\/\/x.com\/salmanravoof\"],\"url\":\"https:\/\/kinqsta.com\/de\/blog\/author\/salmanravoof\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Wie man eine MongoDB-Datenbank erstellt: 6 wichtige Aspekte, die du kennen solltest","description":"Um MongoDB besser zu verstehen, musst du wissen, wie du Datenbanken in MongoDB erstellst, angefangen mit dem Befehl MongoDB Datenbank erstellen.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/","og_locale":"de_DE","og_type":"article","og_title":"Wie man eine MongoDB-Datenbank erstellt: 6 wichtige Aspekte, die du kennen solltest","og_description":"Um MongoDB besser zu verstehen, musst du wissen, wie du Datenbanken in MongoDB erstellst, angefangen mit dem Befehl MongoDB Datenbank erstellen.","og_url":"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2022-11-08T08:56:28+00:00","article_modified_time":"2023-08-18T08:19:24+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/11\/mongodb-create-database.png","type":"image\/png"}],"author":"Salman Ravoof","twitter_card":"summary_large_image","twitter_description":"Um MongoDB besser zu verstehen, musst du wissen, wie du Datenbanken in MongoDB erstellst, angefangen mit dem Befehl MongoDB Datenbank erstellen.","twitter_image":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/11\/mongodb-create-database.png","twitter_creator":"@salmanravoof","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Salman Ravoof","Gesch\u00e4tzte Lesezeit":"31\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/"},"author":{"name":"Salman Ravoof","@id":"https:\/\/kinqsta.com\/de\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987"},"headline":"Wie man eine MongoDB-Datenbank erstellt: 6 wichtige Aspekte, die du kennen solltest","datePublished":"2022-11-08T08:56:28+00:00","dateModified":"2023-08-18T08:19:24+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/"},"wordCount":5872,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/11\/mongodb-create-database.png","keywords":["database","MongoDB","web development","webdev"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/","url":"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/","name":"Wie man eine MongoDB-Datenbank erstellt: 6 wichtige Aspekte, die du kennen solltest","isPartOf":{"@id":"https:\/\/kinqsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/11\/mongodb-create-database.png","datePublished":"2022-11-08T08:56:28+00:00","dateModified":"2023-08-18T08:19:24+00:00","description":"Um MongoDB besser zu verstehen, musst du wissen, wie du Datenbanken in MongoDB erstellst, angefangen mit dem Befehl MongoDB Datenbank erstellen.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/#primaryimage","url":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/11\/mongodb-create-database.png","contentUrl":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/11\/mongodb-create-database.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/de\/blog\/mongodb-datenbank-erstellen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"Webentwicklungs-Tools","item":"https:\/\/kinqsta.com\/de\/thema\/web-entwicklungs-tools\/"},{"@type":"ListItem","position":3,"name":"Wie man eine MongoDB-Datenbank erstellt: 6 wichtige Aspekte, die du kennen solltest"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/de\/#website","url":"https:\/\/kinqsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinqsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinqsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/de\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987","name":"Salman Ravoof","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinqsta.com\/de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g","caption":"Salman Ravoof"},"description":"Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.","sameAs":["https:\/\/salmanravoof.com","https:\/\/www.linkedin.com\/in\/salman-ravoof-5a749133\/","https:\/\/x.com\/salmanravoof"],"url":"https:\/\/kinqsta.com\/de\/blog\/author\/salmanravoof\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/posts\/55726","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/users\/117"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/comments?post=55726"}],"version-history":[{"count":15,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/posts\/55726\/revisions"}],"predecessor-version":[{"id":62758,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/posts\/55726\/revisions\/62758"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/55726\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/55726\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/55726\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/55726\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/55726\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/55726\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/55726\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/55726\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/55726\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/55726\/translations\/dk"},{"href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/55726\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/media\/55727"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/media?parent=55726"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/tags?post=55726"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/topic?post=55726"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}