Bereit für den Einstieg in MongoDB, eine der coolsten Technologien für Webentwickler?
In dieser neuen Serie werden Sie vom Anfänger zum Profi und können Mongo genauso einfach wie MySQL in Ihren Web-Apps verwenden. Aber zuerst wollen wir uns die Grundlagen ansehen.
Was wäre, wenn Sie die programmatischen Modelle fast genau so speichern könnten, wie Sie sie modellieren?
Bei der objektorientierten Entwicklung werden wir aufgefordert, die Code-Entwicklung durch logische Modelle zu erreichen, sodass wir sie in unserem Kopf leichter konzeptualisieren können. Wenn wir dies tun, können wir die logischen Vorgänge, die zur Interaktion verwendet werden, und die Informationen, die es zu unterschiedlichen Zeitpunkten enthält, besser erkennen.
Was wäre, wenn Sie die programmatischen Modelle fast genau so speichern könnten, wie Sie sie modellieren? Was wäre, wenn Sie sie in einer Reihe von Zeilen in Tabellen speichern könnten? Wenn Sie sich mit MongoDB vertraut machen, können Sie genau das tun!
In dieser Reihe lernen wir alles von den Grundlagen von MongoDb, wie dem Erstellen, Aktualisieren und Löschen von Datenbanken und Datensätzen, bis hin zu komplexen Suchen nach Daten und elementarem Data Mining mit MapReduce. Also ohne viel Aufhebens - los geht's!
Hinweis: Dieses Tutorial wird aus der Perspektive eines NIX-basierten Systems wie Mac OSX, Linux BSD usw. durchgeführt. Sie sollten jedoch in der Lage sein, zu folgen, wenn Sie Windows ziemlich gut ausführen, da es Builds für die meisten Plattformen gibt.
Ok, hier beginnt der Spaß. Wir werden mit der Installation von Mongo beginnen. Gehen Sie zur MongoDb-Website und klicken Sie auf den Link zum Herunterladen.
Dadurch gelangen Sie zu einer Seite, auf der Sie einen Build für Ihre Plattform und Architektur erstellen können.
In diesem Tutorial werden nur stabile Releases behandelt. Nehmen Sie sich also keinen nächtlichen Build. Nach dem Download installieren Sie es bitte entsprechend den Anforderungen Ihrer Plattform.
Wenn Sie sich auf einem Nix-Computer befinden, installieren Sie die neueste Version für Ihre Plattform mit dem Paket-Manager.
Starten Sie ein Terminal und tippen Sie ein Mongo
. Das wird die Mongo-Schale öffnen und uns auf den Weg machen. Wenn alles gut geht, sehen Sie eine Ausgabe ähnlich der folgenden:
Wenn Sie das sehen, sind Sie bereit zu gehen.
Zunächst wird keine Datenbank erstellt. Aber keine Sorge, sie werden sofort erstellt, wenn wir mit dem Einfügen unserer Datensätze beginnen, was wir jetzt tun werden. Kopieren Sie den untenstehenden Inhalt und fügen Sie ihn in Ihr ein Mongo
Schale
db.nettuts.insert (erste: 'matthew', letzte: 'setter', dob: '21 / 04/1978 '), geschlecht:' m ', haarfarbe:' braun ', beruf:' entwickler ', nationalität:' australisch '); db.nettuts.insert (erste: 'james', letzte: 'caan', dob: '26 / 03/1940 '), geschlecht:' m ', haarfarbe:' braun ', beruf:' schauspieler ', nationalität:' amerikanisch '); db.nettuts.insert (erste: 'arnold', letzte: 'schwarzenegger', dob: '03 / 06/1925 '), geschlecht:' m ', haarfarbe:' braun ', beruf:' schauspieler ', nationalität:' amerikanisch '); db.nettuts.insert (erste: 'tony', letzte: 'curtis', dob: '21 / 04/1978 '), Geschlecht:' m ', Haarfarbe:' braun ', Beruf:' Entwickler ', Nationalität:' amerikanisch '); db.nettuts.insert (zuerst: 'jamie lee', zuletzt: 'curtis', dob: '22 / 11/1958 '), Geschlecht:' f ', haarfarbe:' braun ', beruf:' schauspieler ', nationalität: 'amerikanisch'); db.nettuts.insert (erste: 'michael', letzte: 'caine', dob: '14 / 03/1933 '), geschlecht:' m ', haarfarbe:' braun ', beruf:' schauspieler ', nationalität:' Englisch' ); db.nettuts.insert (erste: 'judi', letzte: 'dench', dob: '09 / 12/1934 '), Geschlecht:' f ', haarfarbe:' weiß ', beruf:' schauspielerin ', nationalität:' Englisch' );
Alles gut? Ausgezeichnet! Geben Sie den folgenden Befehl ein, um zu bestätigen, dass die Datenbank und die zugehörigen Datensätze erstellt wurden:
db.nettuts.find ()
Wenn alles nach Plan verlief, wird folgende Ausgabe angezeigt:
Dies zeigt, dass alle Datensätze in der Datenbank erstellt wurden. Bevor wir weitergehen, ist das zu beachten Ich würde
Feld. Dies wird automatisch von Mongo für Sie generiert, wenn Sie keine ID angeben. Der Grund ist, dass jeder Datensatz ein eindeutiges Element haben muss Ich würde
Feld.
Sie können sehen, dass wir für jeden der Einträge, die wir einfügen, einen Datensatz haben. Jetzt können wir mit dem Abfragen beginnen.
Erinnern Sie sich an den vorherigen Befehl? Es hat jeden Datensatz in der Datenbank abgerufen und angezeigt. Hilfreich, ja, aber wie konkret werden Sie? Wie findest du alle weiblichen Schauspieler, die die Männer herausfiltern? Das ist eine gute Frage und die Antwort lautet: Selektoren.
Selektoren sind für Mongo was woher
Klauseln beziehen sich auf SQL. Wie bei where-Klauseln erlauben uns die Mongo-Selektoren Folgendes:
MUSS
Spiel. d.h. UND
KlauselKÖNNEN
optional zusammenpassen. d.h. ODER
KlauselMUSS
existieren Beginnen wir mit einem einfachen Selektor. Sag, dass wir finden wollen alle Schauspieler, die weiblich sind
. Dazu müssen Sie den folgenden Befehl ausführen:
db.nettuts.find (gender: 'f');
Hier haben wir festgelegt, dass das Geschlecht gleich "f" sein muss.
Wenn Sie diesen Befehl ausführen, wird die folgende Ausgabe zurückgegeben:
Was wäre, wenn wir männliche Schauspieler suchen wollten? Führen Sie den folgenden Befehl aus:
db.nettuts.find (gender: 'm');
Wir erhalten die folgenden Ergebnisse:
Lassen Sie uns einen Schritt höher treten. Wir suchen männliche Schauspieler, die englisch sind.
db.nettuts.find (gender: 'm', $ oder: [nationality: 'english']);
Wenn Sie das ausführen, werden die folgenden Ergebnisse angezeigt:
Was ist mit männlichen Schauspielern, die Englisch oder Amerikaner sind? Einfach! Lassen Sie uns unseren früheren Befehl anpassen, um die Amerikaner einzubeziehen:
db.nettuts.find (gender: 'm', $ oder: [nationality: 'english', nationality: 'american']);
Für diese Abfrage werden folgende Ergebnisse angezeigt:
Was ist, wenn wir Datensätze sortieren möchten, beispielsweise nach Vorname oder Nationalität? Ähnlich wie SQL bietet Mongo das Sortieren
Befehl. Der Befehl wie der finden
Der Befehl verwendet eine Liste von Optionen, um die Sortierreihenfolge festzulegen.
Im Gegensatz zu SQL geben wir jedoch aufsteigend und absteigend an. Wir machen das wie folgt:
Schauen wir uns ein Beispiel an:
db.nettuts.find (gender: 'm', $ oder: [nationality: 'english', nationality: 'american']). sort (nationality: -1);
In diesem Beispiel werden alle männlichen, englischen oder amerikanischen Schauspieler abgerufen und in absteigender Reihenfolge der Nationalität sortiert.
Was ist mit der Sortierung nach Nationalität in absteigender Reihenfolge und Name in aufsteigender Reihenfolge? Überhaupt kein Problem! Schauen Sie sich die unten stehende Abfrage an, bei der es sich um eine modifizierte Version der letzten von uns ausgeführten handelt.
db.nettuts.find (gender: 'm', $ oder: [nationality: 'english', nationality: 'american']). sort (nationality: -1, first: 1);
Dieses Mal rufen wir die folgenden Ergebnisse ab:
Sie sehen, dass diesmal Arnold Schwarzenegger vor Tony Curtis steht.
Was wäre, wenn wir einen ziemlich großen Datensatz hätten (zum Glück, wir tun es nicht) und wir die Ergebnisse auf nur 2 beschränken wollten? Mongo bietet den Befehl limit, ähnlich wie MySQL, und ermöglicht es uns genau das zu tun. Aktualisieren Sie unsere vorherige Abfrage und geben Sie nur zwei Datensätze zurück. Schauen Sie sich den folgenden Befehl an:
db.nettuts.find (gender: 'm', $ oder: [nationality: 'english', nationality: 'american']). limit (2);
Von diesem Befehl erhalten wir die folgenden Ergebnisse:
Wenn wir den dritten und vierten Datensatz wollten, d. H. Die ersten beiden überspringen? Hier hat Mongo wieder eine Funktion. Sehen Sie sich die weitere Anpassung des vorherigen Befehls an:
db.nettuts.find (gender: 'm', $ oder: [nationality: 'english', nationality: 'american']). limit (2) .skip (2);
Wenn Sie das ausführen, werden die folgenden Ergebnisse angezeigt:
Sie können aus der ursprünglichen Ergebnismenge sehen, dass die ersten beiden übersprungen wurden.
Wie erwartet, bietet Mongo eine Option zum Aktualisieren von Datensätzen. Wie bei der finden
Für Methoden und SQL-Abfragen müssen Sie die Kriterien für den Datensatz angeben, die Sie ändern möchten, und anschließend die Daten in diesem Datensatz, die geändert werden sollen.
Nehmen wir an, wir müssen den Datensatz für James Caan aktualisieren und angeben, dass sein Haar grau und nicht braun ist. Nun, dafür führen wir die Update-Funktion aus. Schauen Sie sich das Beispiel unten an:
db.nettuts.update (first: 'james', last: 'caan', $ set: hair_colour: 'brown');
Nun, wenn Sie das ausführen, wenn alles gut gelaufen ist, gibt es nichts, was darauf schließen lässt, ob es Erfolg oder Misserfolg gab. Um herauszufinden, ob der Datensatz ordnungsgemäß aktualisiert wurde, müssen wir danach suchen. Also lass uns das tun.
db.nettuts.find (first: 'james', last: 'caan');
Danach sehen Sie folgendes Ergebnis:
Dies zeigt, dass das Update funktioniert hat. Ein Wort der Vorsicht jedoch, wenn Sie nicht in der $ set
Modifikator, dann wirst du Ersetzen Sie den Datensatz, wenn es verfügbar ist, statt es aktualisieren. Achtung!
Ich glaube, zu diesem Zeitpunkt haben Sie wirklich begonnen, mit Mongo zu arbeiten. Das ist richtig, wenn Sie einen Datensatz löschen möchten, müssen Sie, wie auch bei SQL, eine Auswahl von Selektoren übergeben, um die zu löschenden Datensätze zu bestimmen. Wenn Sie dies nicht tun, löschen Sie alle Datensätze - und die Datenbank.
Nehmen wir an, wir wollen James Caan nicht in unserer Schauspielerliste. Entfernen wir ihn mit folgendem Befehl aus der Datenbank:
db.nettuts.remove (first: 'james', last: 'caan');
Wie bei der Aktualisierung wird keine sichtbare Ausgabe bereitgestellt, um anzuzeigen, ob wir erfolgreich waren oder nicht. Lassen Sie uns also eine Suche durchführen, um dies zu überprüfen.
db.nettuts.find (first: 'james', last: 'caan');
Danach sollten keine Ergebnisse angezeigt werden. Wenn Sie dies gefunden haben, haben wir James Caan erfolgreich aus unserer Datenbank gelöscht. Was aber, wenn wir alle Datensätze aus der Datenbank löschen möchten??
Um dies zu tun, entfernen Sie einfach die Selektoren aus dem vorherigen Anruf, um sie zu entfernen (siehe unten).
db.nettuts.remove (); db.nettuts.find ();
Nach dem Ausführen beider Befehle oben wird keine Ausgabe angezeigt, die darauf hinweist, dass die Datenbank mit allen Datensätzen jetzt entfernt wurde.
In dieser schnellen Einführung in die Verwendung von MongoDB haben wir uns Folgendes angesehen:
Mit diesem Wissen können Sie gehen, üben und mehr über diese wunderbare Technologie erfahren. Wenn Sie weitere Informationen wünschen, können Sie die MongoDb-Website besuchen oder @mongodb auf Twitter folgen.
Im nächsten Tutorial lernen wir mehr über komplexe Abfragen. Also bleibt dran und bedankt sich vielmals beim Lesen.
Aktualisieren: Der zweite Teil dieser Serie wurde veröffentlicht und ist hier zu finden.