MongoDB $ max Operator

MongoDB $ max Operator
MongoDB hat viele Betreiber entwickelt, um Sondertransaktionen wie das Aktualisieren der Datensätze, das Hinzufügen eines neuen Datensatzes und die Anzeige der Datensätze unter einer bestimmten Bedingung zu finden. Einer dieser Betreiber ist der „$ max“ -Preiber, der verwendet wird, um den größten Wert im Datensatz zu überprüfen. Abgesehen davon können wir es verwenden, um den kleinsten Wert mit einem neuen größten Wert zu aktualisieren, nachdem Sie sie in der Funktion „Aktualisierung“ vergleicht. Die andere Verwendung des „$ max“ -Preibers besteht darin, die Datensätze einer bestimmten Sammlung so zu gruppieren und anzuzeigen. In diesem Leitfaden werden wir einfache Abfragebeispiele verwenden, um die zuvor erwähnten Verwendungen des „$ max“ -Preibers im MongoDB-Befehlszeilen-Dienstprogramm in unserer Windows-Plattform zu besprechen.

Beispiel 1:

Beginnend mit der Illustration zu diskutieren und wie der „$ max“ -Operator in der MongoDB -Shell funktioniert, müssen wir eine Sammlung mit dem Namen „Daten“ haben, die bereits erstellt werden muss. Um diese Sammlung zu erstellen, müssen wir einige Datensätze direkt ohne die Verwendung einer Anweisung "erstellen" hinzufügen. Der Anweisungen zur Einfügung reicht aus, um eine Sammlung zu erstellen und die darin enthaltenen Datensätze hinzuzufügen. Wir verwenden die Funktion „InsertMany“ in der Abfrage, um vier Datensätze hinzuzufügen, jeweils 4 Felder verschiedener Typen.

Test> db.Daten.InsertMany (["ID": 1, "Name": "Bravo", "Gehalt": 65000, "Alter": 44,
… "ID": 2, "Name": "Stephen", "Gehalt": 77000, "Alter": 55,
… "ID": 3, "Name": "Maria", "Gehalt": 42000, "Alter": 27,
… "ID": 4, "Name": "Hawkin", "Gehalt": 58000, "Alter": 33])

Der Befehl Einfügen ist erfolgreich und die Ausgabenachricht zeigt, dass die Datensätze hinzugefügt werden.

Nach dem Einfügen der Datensätze in die Sammlung „Daten“ unseres MongoDB ist es an der Zeit, diese Aufzeichnungen auf der Shell zu sehen. So führen wir den Funktionsanweis „find ()“ auf der MongoDB -CLI aus, gefolgt von der Funktion „foreach ()“, die das Printjson -Argument nimmt, um ein Ergebnis im JSON -Format anzuzeigen. Das in der Shell angezeigte Ergebnis zeigt insgesamt 4 Dokumente in der Sammlung, die im folgenden Ausgangsbild angezeigt werden:

Test> db.Daten.finden().foreach (printjson)

Probieren wir den Operator "$ max" im Aktualisierungsbefehl von MongoDB aus, um die bereits eingefügten Datensätze zu ändern. Somit wird der UpdateOne () verwendet, um nur einen einzelnen Datensatz der "Daten" -Kollektion wie einen bestimmten Datensatz zu ändern, in dem das Feld "ID" einen Wert von "2" hat. Der Operator „$ max“ wird auf das Feld "Gehalt" der "Daten" -Kollektion angewendet, um zu überprüfen, ob das Feld "Gehalt" einen Wert hat, der mehr als 55000 ist. Wenn nicht, aktualisieren Sie den Datensatz mit 55000. Das Ausgabeergebnis für diese AktualisierungsOne () -Funktionsabfrage, die eine "0" -Modifikationsanzahl als Datensatz "2" anzeigt, hat weniger als 55000 Gehaltswert.

Test> db.Daten.updateOne (id: 2, $ max: Gehalt: 55000)

Nach diesem Update versuchen wir dieselbe Funktion "find ()", um das geänderte Ergebnis in der Befehlszeilenschale von MongoDB anzuzeigen. Aber wir erhalten die gleiche Ausgabe, die wir erhalten haben, bevor wir die Anweisung "Update" verwendet haben. Es gab keine Änderung, da der Wert von 77000 größer als 55000 ist.

Test> db.Daten.finden().foreach (printjson)

Probieren wir die gleiche UpdateOne () -frage erneut mit ein wenig Modifikation aus. Diesmal versuchen wir den höheren Wert, der „85000“ als der Wert „77000“ ist, der sich bereits im Feld „Gehalt“ der "Daten" -Kollektion befindet, um einen Unterschied in unserer Ausgabe zu machen. Die Ausgabe zeigt die Modifikationszahl „1“ dieses Mal, da der Wert „85000“ den bereits anhaltenden Wert von „77000“ im Feld ersetzt.

Test> db.Daten.updateOne (id: 2, $ max: Gehalt: 85000)

Nachdem wir den kleineren Wert von „77000“ durch einen neuen Wert von „85000“ durch den „$ max“ -Preiber von MongoDB erfolgreich ersetzt haben, verwenden wir schließlich die Funktion „find ()“ in der Anweisung „DB“, um nach diesem Update zu überprüfen. ob es erfolgreich aktualisiert wird oder nicht. Die Ausgabe zeigt, dass der Wert im Feld „Gehalt“ eines 2. Datensatzes in dieser Sammlung perfekt aktualisiert ist.

Test> db.Daten.finden().foreach (printjson)

Beispiel 2:

Lassen Sie uns zu einem anderen Beispiel springen, um den „$ max“ -Portler in MongoDB zu verwenden. Dieses Mal haben wir den „$ max“ -Portler ausgelöst, um die eindeutigen Datensätze einer Sammlung zu gruppieren und anzuzeigen, wenn es Duplikate für dieselben Feldwerte gibt. Zu diesem Zeitpunkt fügen wir 2 weitere Datensätze in die Erfassung einer "Daten" einer "Test" -Datenbank ein. Diese Datensätze enthalten die 2 gleichen Werte im Feld „Name“, die sich ebenfalls in den bereits eingefügten 4 Datensätzen befinden, und der Rest ist unterschiedlich. Um die Datensätze einzufügen, verwenden wir dieselbe DB -Anweisung, die die Funktion „InsertMany“ darin enthält, um die "Daten" -Kollektion zu erhalten, um aktualisiert zu werden.

Test> db.Daten.InsertMany (["ID": 5, "Name": "Bravo", "Gehalt": 35000, "Alter": 45,
… "ID": 6, "Name": "Hawkin", "Gehalt": 67000, "Alter": 33])

Die Anweisung wird erfolgreich ausgeführt.

Nachdem die 2 neuen Datensätze hinzugefügt werden, können Sie sie auch mit derselben "Find" -Funktion in der Anweisung "DB" angezeigt, gefolgt von der Funktion "foreach". Die folgende Anzeigeausgabe im Bild zeigt die 2 neuen Datensätze am Ende dieser Sammlung:

Test> db.Daten.finden().foreach (printjson)

Nachdem wir die 6 Datensätze der Sammlung „Daten“ angezeigt haben, sind wir bereit, die Gesamtfunktion darauf auszuführen. Daher wird die Funktion „Aggregat“ in der folgenden aufgeführten Abfrage verwendet. Mit dieser Funktion verwenden wir den "$ Group" -Portler, um den Datensatz einer "Daten" -Kollektion gemäß den eindeutigen Namen des Feldes "ID" und des "Gehalts" -Feldes zu gruppieren. Der Operator „$ max“ wird auf das Feld „Gehalt“ der Datensätze angewendet, um die maximalen Werte anzuzeigen, die angezeigt werden müssen. Erhalten Sie den größten Wert aus dem Feld "Gehalt" gemäß den doppelten Namen im Feld "Name", das als "ID" für diese Gruppierung verwendet wird. Insgesamt 4 Datensätze werden angezeigt. Der kleinste Wert (aus den doppelten Datensätzen) wird ignoriert, während der größte Wert angezeigt wird.

db.Daten.Aggregate ([$ Group: _id: "$ name", Gehalt: $ max: "$ galary"])

Abschluss

Der erste Absatz dieses Leitfaden. Dieser Leitfaden enthält zwei Befehlsbasierte Beispiele, die sich mit dem Operator „$ max“ beziehen, um seinen Zweck zu demonstrieren. Wenn Sie die MongoDB -Illustrationen durchlaufen, können Sie einige nützliche Transaktionen in der Datenbank durchführen, unabhängig davon, ob Sie einen bereits vorhandenen Datensatz durch einen neuen Wert ersetzen oder die Datensätze angezeigt werden, indem Sie sie über den „$ max“ -Preiberer gruppieren.