‫Kursleiter: Das Abfragen von Daten in einer
‫Datenbank ist eine der wichtigsten Operationen, die wir in Datenbanken haben.
‫Schauen wir uns nun einige Abfrageoperatoren in MongoDB
‫an, beginnend mit einigen einfachen
‫und dann zu einigen wirklich komplexen Abfragen.
‫Und lassen Sie uns uns hier zunächst etwas Raum geben.
‫Sie wissen bereits, dass der einfachste Weg,
‫alle Dokumente in einer bestimmten Sammlung
‫abzufragen, darin besteht, einfach find zu verwenden,
‫ohne dort etwas einzugeben.
‫So haben wir es bis jetzt gemacht.
‫Und so gibt es uns einfach
‫dieses Ergebnis mit
‫allen Dokumenten, die sich in
‫einer bestimmten Sammlung befinden, praktisch ohne Suchkriterien.
‫Aber jetzt sagen wir mal, wir wollen eigentlich nur eine Tour und
‫deren Namen kennen wir schon.
‫So können wir mit dem
‫uns bekannten Namen nach dieser Tour suchen.
‫Und so verwenden wir db. Touren und wieder
‫finden.
‫Aber diesmal übergeben wir ein Filterobjekt.
‫Auch hier brauchen wir also wieder ein Objekt.
‫Und so beginnen Sie jetzt zu sehen,
‫dass in MongoDB wirklich alles mit Objekten funktioniert.
‫Und das wird etwas später in diesem Vortrag noch
‫deutlicher hervortreten.
‫Also, innerhalb dieses Objekts passieren wir den Filter.
‫Also im Grunde die
‫Suchkriterien, nach denen wir suchen möchten.
‫Also setzen wir einfach den Namen auf den Tournamen,
‫nach dem wir suchen möchten.
‫Sagen wir also The Forest Hiker.
‫Und das ist es tatsächlich.
‫Das sind also unsere Suchkriterien bzw. der Suchfilter.
‫Und wenn wir jetzt
‫zurückgekehrt wären, dann bekommen wir nur diese eine
‫Tour, bei der der Name genau mit der übereinstimmt, an der wir vorbeigekommen sind.
‫Und wir könnten natürlich dasselbe für alles andere tun.
‫Zum Beispiel könnten wir
‫für den Schwierigkeitsgrad nach Touren suchen, die einen
‫leichten Schwierigkeitsgrad haben.
‫Also, schwierig und einfach.
‫Schließen Sie das Objekt, schließen Sie die Funktion.
‫Und so bekommen wir alle Touren, bei denen der Schwierigkeitsgrad einfach ist.
‫Im Moment gibt es nur eine Tour,
‫aber wenn wir mehrere Touren mit Schwierigkeitsgrad
‫leicht eingestellt
‫hätten, dann würden natürlich alle diese Dokumente zurückgegeben.
‫Das ist also der
‫einfachste Weg, nach Dokumenten zu suchen.
‫Kommen wir nun auf die nächste
‫Ebene, indem wir einige spezielle Abfrageoperatoren verwenden.
‫Und was ich tun möchte, ist nach Touren zu
‫suchen, die einen Preis unter 500 haben.
‫Und so funktioniert es.
‫Daher verwenden wir immer db. Der Sammlungsname . finden.
‫Und dann wieder oder Filterobjekt.
‫Und denken Sie daran, ich möchte nach Preisen suchen,
‫also sage ich Preis.
‫Und jetzt möchte ich alle Touren mit einem Preis unter 500.
‫Also, wie mache ich das?
‫Nun, ich muss den Kleiner-als-Operator verwenden und
‫es funktioniert so.
‫Wir müssen noch ein neues Objekt
‫definieren, wobei wir die lte-Eigenschaft auf 500 setzen, dann
‫dieses Objekt
‫schließen und dann das erste Preisobjekt schließen
‫und dann die Funktion schließen.
‫Das sieht sehr seltsam aus, ich
‫weiß, aber so verwenden wir Abfrageoperatoren in MongoDB.
‫lte steht also wiederum für weniger als,
‫weil wir danach suchen.
‫Wo der Preis unter 500 liegt.
‫Und dieses besondere Zeichen hier ist in MongoDB
‫für seine Betreiber reserviert.
‫Wenn Sie also dieses Dollarzeichen hier in MongoDB sehen, wissen Sie,
‫dass es sich um einen Mongo-Operator handelt.
‫Das Seltsamste hier ist wahrscheinlich,
‫dass wir es in einem neuen Objekt tun
‫müssen, aber wenn man darüber nachdenkt, ist es eigentlich die
‫einzige Möglichkeit, festzulegen, dass der Preis nicht einfach 500 betragen sollte, sondern
‫etwas anderes.
‫Also müssen wir den Preis auf etwas anderes als 500 setzen.
‫Und der beste Weg
‫ist, einfach ein anderes Objekt darin zu verwenden.
‫Genau so funktioniert MongoDB dann.
‫Probieren wir es jetzt aus, drücken Sie die Eingabetaste.
‫Und tatsächlich erhalten wir
‫unsere beiden Dokumente, bei denen die Preiseigenschaft unter 500 liegt.
‫Toll, als nächstes wollen wir
‫tatsächlich nach zwei Suchkriterien gleichzeitig suchen.
‫Als nächstes möchte ich also nach Dokumenten
‫suchen, deren Preis kleiner oder gleich 500 ist,
‫was wir hier bereits
‫hatten, aber gleichzeitig auch die Bewertung größer oder
‫gleich 4. 8.
‫Und so, das sollte uns dann nur diese Tour hier geben.
‫Also nur diese,
‫weil dies die einzige ist, deren Preis unter 500 liegt und
‫die Bewertung gleich oder höher 4 ist. 8.
‫Es ist also 4. 8 und damit
‫einer, der unserer Abfrage entsprechen sollte.
‫Also, lass es uns klären, um etwas Verwirrung zu beseitigen.
‫Nun möchte ich dieses Ergebnis hier
‫haben, damit wir es mit dem nächsten Ergebnis vergleichen können.
‫Also schreiben wir jetzt die Abfrage, die ich gerade beschrieben habe.
‫Also, finde und wieder, dieser hier wird
‫genauso sein.
‫Wir möchten also, dass der Preis kleiner oder gleich 500 ist.
‫Oder wir könnten einfach weniger als 500 sagen.
‫lte ist also kleiner oder gleich und lte ist einfach kleiner als.
‫Dies ist also der erste Teil, der Preis unter 500.
‫Gleichzeitig möchten wir, dass die Bewertung größer oder gleich
‫4 ist. 8.
‫Und das ist ganz einfach.
‫Wir müssen lediglich ein zweites Feld in
‫unserem Filterobjekt angeben.
‫Also zuerst der Preis und jetzt die Bewertung.
‫Wir möchten also, dass die Bewertung
‫größer oder gleich 4
‫ist, und Sie können sie wahrscheinlich erraten. 8.
‫Schließen Sie nun dieses Filterobjekt und schließen Sie die Funktion.
‫Also, lass es uns testen.
‫Und tatsächlich liefert es uns das Ergebnis, das wir erwartet hatten.
‫Also das einzige Dokument, bei dem beide
‫Suchkriterien gleichzeitig zutreffen.
‫Also, um es noch einmal zusammenzufassen, wenn
‫wir nach zwei Kriterien gleichzeitig suchen
‫möchten, was im Grunde eine und Abfrage ist,
‫also Preis kleiner als 500 und Bewertung größer oder gleich
‫4. 8.
‫Nun, das einzige, was wir
‫tun müssen, ist, zwei Felder im Filterobjekt anzugeben.
‫Und ich weiß, das sieht ziemlich verwirrend aus.
‫Mir ging es genauso, als ich dieses Zeug lernte, aber ich
‫hoffe, dass Sie mir
‫trotzdem folgen können, damit wir jetzt tatsächlich noch eine Stufe weiter gehen können.
‫Also, hier haben wir eine und abgefragt.
‫Suchen wir also nach Dokumenten, bei denen diese beiden
‫Bedingungen beide zutreffen, aber nun führen wir eine oder -Abfrage durch.
‫Also, grundsätzlich nach allen Dokumenten suchen, bei
‫denen entweder dieser Teil hier wahr ist
‫oder dieser Teil wahr ist.
‫Also, db. Touren. finde und lass
‫es uns hier schon
‫schließen, denn das wird noch verwirrender.
‫Wir möchten also eine oder -Abfrage durchführen und
‫die Funktionsweise mit MongoDB-Operatoren ist so.
‫Wir sagen or und dann geben wir hier ein Array an.
‫Und in diesem Array werden wir dann die beiden Bedingungen dort platzieren, wo
‫wir wollen, dass eine von ihnen wahr ist.
‫Also, ich weiß, das sieht verwirrend aus,
‫aber schreiben wir es jetzt auf und ich werde es dann noch einmal erklären,
‫wenn wir das schon tun.
‫Die erste Bedingung ist also, dass der
‫Preis unter 500 liegen sollte.
‫Also im Grunde das gleiche wie vorher.
‫Das ist also das erste Objekt.
‫Also, all dies, also die erste Bedingung, im
‫Grunde der erste Filter und
‫dann der zweite.
‫Die Bewertung sollte also wie zuvor größer
‫oder gleich 4 sein. 8.
‫Schließen Sie dieses und schließen Sie dieses.
‫Und so ist es eigentlich schon.
‫Um es hier noch einmal zusammenzufassen, beginnen wir mit dem or-Operator
‫und der or-Operator akzeptiert eine Reihe von Bedingungen.
‫Deshalb erstellen wir dann hier dieses Array und
‫dieses Array enthält dann im
‫Grunde ein Objekt für jeden unserer Filter.
‫Also wollen wir, dass entweder dieser wahr
‫ist oder dieser.
‫Versuchen wir also zu sehen, was unsere Ergebnisse sein werden.
‫Und so bekommen wir eigentlich alle drei Touren.
‫Lassen Sie uns also analysieren, warum das so ist.
‫Der erste hat also einen Preis von weniger als 500.
‫Und deshalb wurde es hier aufgenommen.
‫Es hat nicht die Bewertung größer oder gleich 4. 8,
‫also nur 4. 7, aber da wir hier eine
‫oder -Abfrage durchführen, muss nur eine der Bedingungen wahr sein.
‫Aus diesem Grund wurde dieses Dokument hier ausgewählt
‫und in unsere Ausgabe aufgenommen.
‫Als nächstes hat dieser auch den Preis kleiner oder gleich 500
‫und gleichzeitig die Bewertung größer oder
‫gleich 4. 8.
‫Und so wurde es tatsächlich aufgenommen,
‫weil beide wahr sind.
‫Der letzte Preis hat dann nicht weniger als 500, aber die
‫Bewertung größer oder gleich 4. 8.
‫Und so ist wieder eine der beiden Bedingungen wahr
‫und da wir eine oder Abfrage durchführen, ist
‫diese Tour auch enthalten.
‫Also, lass uns das klären und nur
‫noch einen, der in etwa gleich sein wird.
‫Ich werde einfach von kleiner als zu größer als wechseln.
‫Und ich möchte, dass Sie
‫jetzt die Ausgabe dieses Ergebnisses basierend auf
‫dem vorherigen Ergebnis erraten.
‫Könnt ihr also erraten, was das Ergebnis sein wird?
‫Werfen wir also einen Blick darauf.
‫Und so haben wir jetzt tatsächlich nicht mehr alle drei Touren, sondern
‫nur noch die zweite und die dritte,
‫denn die erste Tour hatte den
‫Preis unter 500 und auch die Bewertung
‫unter 4. 8.
‫Somit traf keine der Bedingungen zu und
‫ist daher nicht mehr enthalten.
‫Nur der zweite und der
‫dritte, der jetzt auch nicht mehr als 500 kostet, aber die Note
‫4 hat. 8 und
‫ist daher immer noch enthalten.
‫Und das letzte hat natürlich alles wahr und
‫so ist es natürlich auch hier.
‫Ich wollte Ihnen hier nur noch
‫etwas zeigen, dass wir neben unserem Filterobjekt, also
‫diesem, auch ein Objekt zur Projektion übergeben können.
‫Projektion bedeutet also, dass wir einfach
‫einige der Felder in der Ausgabe auswählen möchten.
‫Also, lass es mich dir zeigen und es ist sehr einfach.
‫Alles, was wir tun müssen, ist zum Beispiel zu sagen, dass Name gleich Eins ist.
‫Das bedeutet also, dass wir nur den Namen
‫in der Ausgabe haben wollen und deshalb setzen wir name auf eins.
‫Alle anderen werden in diesem Fall nicht erscheinen.
‫Also, lass mich dir das zeigen.
‫Und tatsächlich haben wir nur den
‫Namen und nicht mehr all diese anderen Eigenschaften.
‫Und dies kann in einigen Fällen sehr nützlich sein.
‫Die Idee ist natürlich auch aufzutauchen, aber das
‫ist immer da.
‫Es gibt keine Möglichkeit das zu entfernen.
‫Okay, cool.
‫Ich denke also, das Hauptziel dieses Vortrags ist nun erreicht,
‫im Wesentlichen, Sie mit der
‫Art und Weise, wie wir in MongoDB abfragen,
‫vertraut zu machen und Ihnen auch diese komplexen MongoDB-Operatoren zu zeigen, die
‫wir hier haben.
‫Aus irgendeinem Grund kann ich es nicht auswählen,
‫aber Sie wissen, was ich meine.
‫Wir haben also mehr als,
‫wir haben oder, und wir haben wirklich noch
‫eine Menge anderer Betreiber.
‫Dies ist also nur
‫die Oberfläche, aber im weiteren Verlauf des Kurses
‫werden Sie natürlich noch ein paar andere Operatoren kennenlernen.
‫Also, dies ist nur, um Sie
‫vertraut zu machen, um mit Abfragen in MongoDB zu beginnen.
‫Und das ist uns, glaube ich, in diesem Vortrag gelungen.