MongoDB $ Range

MongoDB $ Range
Der MongoDB $ Range -Operator ist ein benutzerdefinierter Bediener, der eine Array von Zahlen erzeugt, die auf einem gegebenen Startwert, Endwert und Schrittwert basieren. Dieser Bediener ist ein nützliches Instrument zum Generieren von Sequenzen von Zahlen zur Verwendung in der Datenmanipulation oder -analyse. Es wird in der Regel als Komponente des $ -Projektbetreibers in einer aggregierten Pipeline verwendet, um ein neues Feld in den Ausgabedokumenten zu erstellen, die ein Array von Zahlen enthalten. Es dauert insgesamt drei Argumente: den Startwert, der Feldname, auf den das Bereich des Bereichs angewendet wird. Dieser Leitfaden wird die Verwendung des „Range“ -Preibers von MongoDB mit Hilfe einiger Beispiele erklären und demonstrieren.

Beispiel # 01:

Stellen Sie sicher, dass Ihre MongoDB -Datenbank bereits auf Ihrem Computer eingerichtet ist. Wenn nicht, versuchen Sie es zusammen mit der Erstellung einer Sammlung darin zu installieren. Die Sammlung muss Aufzeichnungen haben. Wir haben unsere MongoDB -Datenbank eingerichtet, indem wir eine Sammlung mit dem Namen "Dummy" erstellt und einige Dokumente hinzugefügt haben. Es ist Zeit, den Bereichsbetreiber auf einer Dummy -Sammlung zu verwenden. Vorher werden wir die Dokumente, die wir in unserer Dummy -Sammlung haben, anzeigen. Die unten angegebene Anweisung wird zu diesem Zweck in der MongoDB -Shell ausgeführt. Der Befehl verwendet die Methode "find ()", um nach allen Dokumenten in einer Sammlung mit dem Namen "Dummy" mit den leeren lockigen Klammern "" zu suchen. Es werden keine spezifischen Suchkriterien verwendet, sodass alle Datensätze in der Kollektion „Dummy“ angezeigt werden.

Die Ausgabe des Befehls ist ein Array von Dokumenten, wobei jeder Datensatz mehrere Felder enthält. Die Felder enthalten eine eindeutige ObjektID „_id“ jedes Datensatzes, das Stadtfeld repräsentiert den Namen einer Stadt, das Zählfeld repräsentiert ein numerisches, das Desc -Feld repräsentiert eine Zeichenfolge, die die Stadt beschreibt, und das zufällige Feld repräsentiert einen zufälligen numerischen Wert.

Test> db.Dummy.finden()
[_id: ObjectID ("63c8a1f94ff07039aa6cdf6b"), City: 'Texas', Graf: 3, Desc: 'Midgröße City', Random: 81,
_id: objectId ("63c8a1f94ff07039aaa6cdf6c"), City: 'Los Angeles', Graf: 3, Desc: 'Midgröße City', Random: 5,
_id: ObjectID ("63c8a1f94ff07039aaa6cdf6d"), Stadt: 'Italien', Graf: 10, Desc: 'am schönsten und überfüllt', Random: 12,
_id: ObjectID ("63c8a1f94ff07039aaa6cdf6e"), City: 'Istanbul', Graf: 3, Desc: 'Midgröße City', Random: 95,
_id: ObjectID ("63c8a1f94ff07039aaa6cdf6f"), City: 'Delhi', Graf: 3, Desc: 'Midgröße City', Random: 22]

Es ist Zeit, das Feld „Range“ auf alle Datensätze einer MongoDB -Dummy -Sammlung anzuwenden, um den Zahlenbereich zu erhalten. Der Befehl zur Anwendung des Range -Operators wurde darunter beigefügt. Es wird die Methode „Aggregate ()“ verwendet, um einen Aggregat -Betrieb auf einer Sammlung namens "Dummy" durchzuführen. Der Betreiber „$ project“ wird verwendet, um die Dokumente in einer Sammlung durch Einbeziehung oder Ausschluss von Feldern neu zu gestalten und kann auch neue Felder erstellen. In diesem Fall wird der Operator „$ project“ verwendet, um ein neues Feld namens "REST" zu erstellen, das ein Array ist, das einen Bereich von Zahlen von 0 zum Wert des Felds „Zufälliger“ in jedem Dokument enthält und um 10 inkrementiert wird. Die Ausgabe des Befehls zeigt ein Array von Datensätzen an, das REST -Feld repräsentiert ein neues Array, das eine Reihe von Zahlen enthält, die auf dem Wert des Felds „Zufall“ basieren, und das Feld „Stadt“ mit dem Namen einer bestimmten Stadt. Der Restpunkt kann aus dem Bereich im Bereich "Rest" -Array erraten werden.

Test> db.Dummy.Aggregate ([$ Project: City: 1, "Rest": $ range: [0, "$ random", 10]])
[_id: ObjectID ("63c8a1f94ff07039aa6cdf6b"), Stadt: 'Texas', Rest: [0, 10, 20, 30, 40, 50, 60, 70, 80],
_id: ObjectID ("63c8a1f94ff07039aaa6cdf6c"), Stadt: 'Los Angeles', Rest: [0],
_id: ObjectID ("63c8a1f94ff07039aaa6cdf6d"), Stadt: 'Italien', Rest: [0, 10],
_id: ObjectID ("63c8a1f94ff07039aaa6cdf6e"), Stadt: 'Istanbul', Rest: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90],
_id: ObjectID ("63c8a1f94ff07039aaa6cdf6f"), Stadt: 'Delhi', Rest: [0, 10, 20]]

Beispiel # 02:

Schauen wir uns ein weiteres Beispiel an, um das Bereich der Reichweite auf der MongoDB -Sammlung zu verwenden. Die Sammlung „Test“ wurde in diesem Beispiel bisher verwendet. Die unten beigefügte Anweisung „Find“ zeigt den Inhalt dieser Sammlung an. Die Ausgabe des Befehls enthält die eindeutige Kennung, die jedes Dokument von MongoDB zugewiesen wurde, das Feld „S“ die Ausgangspunktnummer und das Feld „E“ die Endpunktzahl darstellt.

Test> db.Prüfen.finden()
[_id: ObjectID ("63CB65F0BEF5ADFC81DF628E"), S: 2, E: 8,
_id: ObjectID ("63CB65F0BEF5ADFC81DF628F"), S: 1, E: 5,
_id: ObjectID ("63CB65F0BEF5ADFC81DF6290"), S: 4, E: 9]

Die Ausgabe zeigt, dass das Array mit dem $ Range -Operator erstellt wird, der zwei Argumente nimmt: den Startwert und den Endwert. Der Startwert ist das Feld "S" und der Endwert ist das Feld "E" im Dokument. Die endgültige Ausgabe dieses Befehls ist eine Liste von Dokumenten, die jeweils mit einem _id, einem "S" -Feld, einem "E" -Feld und einem "R" -Feld, das ein Array von Ganzzahlen enthält, enthält. Die Ganzzahlen im Feld "R" sind der Zahlenbereich zwischen den Feldern "S" und "E" für jedes Dokument: jeweils ein Inkrement von 1. Dies liegt daran, dass wir für den Bereich Operator keinen Inkrementwert zugewiesen haben. Daher nahm der „Bereich“ -Preiber „1“ als Inkrementwert für sich.

Test> db.Prüfen.Aggregate ([$ projekt: s: 1, e: 1, "r": $ range: ["$ s", "$ e"]])
[_id: ObjectID ("63CB65F0BEF5ADFC81DF628E"), S: 2, E: 8, R: [2, 3, 4, 5, 6, 7],
_id: ObjectID ("63CB65F0BEF5ADFC81DF628F"), S: 1, E: 5, R: [1, 2, 3, 4],
_id: ObjectID ("63CB65F0BEF5ADFC81DF6290"), S: 4, E: 9, R: [4, 5, 6, 7, 8]]

Beispiel # 03:

In allen obigen Abbildungen haben wir den Bereichsoperator nur auf den Feldern von Sammlungen mit ganzzahligen Werten angewendet. Wir werden einen Fehler erhalten, wenn wir den Bereichsoperator auf den Zeichenfolge -Wert anwenden. Was ist, wenn wir es auf die Feldwerte vom Dezimalbereich anwenden?? Lassen Sie uns dies überprüfen, indem Sie sie auf eine neue Sammlung mit dem Namen "Float" in unserer MongoDB -Datenbank anwenden. Die auf die Sammlung „Float“ angewendete Funktion find () zeigt die 5 darin enthaltenen Sätze von Dokumenten. Jedes Dokument enthält seine eindeutige Bezeichner, das Feld „Title“ und das Feld „Age“ mit dem Float-Typ, das Dezimalpunktwerte enthält.

Test> db.Schweben.finden()
[_id: ObjectID ("63CB5F26BEF5ADFC81DF6289"), Titel: 'Nina', Alter: 45.6,
_id: ObjectID ("63CB5F26BEF5ADFC81DF628A"), Titel: 'Ana', Alter: 22.75,
_id: ObjectID ("63CB5F26BEF5ADFC81DF628B"), Titel: 'Eden', Alter: 35.9,
_id: ObjectID ("63CB5F26BEF5ADFC81DF628C"), Titel: 'Rock', Alter: 82.5,
_id: ObjectID ("63CB5F26BEF5ADFC81DF628D"), Titel: 'LIA', Alter: 27]

Jetzt haben wir den „Bereich“ -Operator in der Float -Sammlung mit der Gesamtfunktion angewendet, um den Zahlenbereich mit einem Zuwächsen von 11 für das Feld „Alter“ zu erhalten. Dieser Code generiert jedoch einen Fehler, da der $ range-Operator verlangt, dass der Endwert eine 32-Bit-Ganzzahl ist, der Wert des Felds „Alter“ jedoch eine schwimmende Punktzahl ist und nicht in eine 32- Bit Ganzzahl. Dies zeigt, dass wir den Bereichsbetreiber auf keinen anderen Datentyp anwenden können, mit Ausnahme des Integer -Datentyps in der MongoDB -Datenbank.

Test> db.Schweben.Aggregate ([$ project: title: 1, "rest": $ range: [0, "$ ay", 11]])

MongoServerError: Planexecutor-Fehler während der Aggregation :: verursacht durch :: $ Range erfordert einen Endwert, der als 32-Bit-Ganzzahl dargestellt werden kann, gefundener Wert: 45.6.

Abschluss

Wir haben das Konzept des Reichweitenbetreibers informiert, der in der MongoDB -Aggregat -Funktion verwendet wird. Nachdem wir die Verwendung des Range -Operators definiert haben, haben wir seine Verwendung mithilfe von drei verschiedenen Beispielen für MongoDB -Befehle in der Shell erläutert. Die erste Abbildung zeigt die Verwendung des Bereichs Operator auf dem Feld "Integer-Typ", um die Abfolge von Zahlen mit der spezifischen Inkrementnummer zu erhalten. Die zweiten Abbildungen zeigen, wie ein Bereichsoperator auf das Feld Start und End angewendet werden kann, ohne die Inkrementnummer zu verwenden. Während das letzte Beispiel zeigt, dass der Bereichsbetreiber nicht an anderen Datentypen als Ganzzahlen funktioniert: Floats und Strings.