MongoDB $ MAP -Operator

MongoDB $ MAP -Operator
MongoDB ist eine beliebte noSQL-dokumentorientierte Datenbank, mit der die großen Datenmengen gespeichert und abfragen. Eine der leistungsstarken Merkmale von MongoDB ist die Möglichkeit, den $ MAP -Operator in Aggregationspipelines zu verwenden, um die Dokumente in einer Sammlung zu transformieren. Mit dem $ MAP -Operator können die Entwickler eine bestimmte Funktion auf jedes Element eines Arrays anwenden und die transformierten Werte als neues Array zurückgeben. Der $ MAP -Operator wird in der $ -Projekt -Stufe einer Aggregationspipeline verwendet und nimmt zwei Argumente an: den Eingabebereich und den Ausdruck „AS“. Der Eingangsausdruck ist das Array, das Sie transformieren möchten, und der Ausdruck "AS" ist die Funktion, die Sie auf jedes Element des Arrays anwenden möchten. Der $ MAP -Operator gibt ein neues Array mit den transformierten Werten zurück. Wir beginnen mit der Anzeige der verfügbaren Datenbanken in MongoDB.
Test> DBS anzeigen
admin 40.00 KIB
Konfiguration 112.00 KIB
Lokal 72.00 KIB

Verwenden Sie die Datenbank "Test", um einige Daten in eine MongoDB -Datenbank hinzuzufügen.e. "Test verwenden".

Test> Test verwenden
Bereits beim DB -Test

Beispiel 1:

Hier ist ein Beispiel für die Verwendung des $ MAP -Operators, um jedes Element eines Arrays in einer Sammlung zu quadrieren. Wir generieren eine neue Sammlung mit dem Namen "Info" in der "Test" -Datenbank von MongoDB, indem wir die CreateCollection -Funktion von MongoDB abgeben. Die Methode createCollection () gibt ein Objekt mit der Eigenschaft „OK“ und einem Wert von 1 zurück, der angibt, dass die Sammlung erfolgreich erstellt wird.

Test> db.CreateCollection ("Info")
OK: 1

Nachdem die Sammlung generiert wurde, fügen wir einige Array-Typ-Datensätze ein,. Daher wird die Einfügemany -Funktion hier abgeschaltet, um drei Datensätze hinzuzufügen, die jeweils das Feld „arr“ eines Array -Typs mit einigen numerischen Werten enthalten.

Test> db.Die Info.insertMany ([id: 1, arr: [2, 4, 6], id: 2, arr: [3, 5, 7], id: 3, arr: []])
Anerkannt: wahr,
InsertDIDs:
'0': ObjectID ("63C4D968AC8011ECC27D7A35"),
'1': ObjectID ("63C4D968AC8011ECC27D7A36"),
'2': ObjectID ("63C4D968AC8011ECC27D7A37")

Nach der erfolgreichen Einführung von Aufzeichnungen in die Sammlung „Info“ können Sie sie sich mit der Funktion „Find“ ansehen, wie wir in der folgenden Abfrage verwendet wurden:

Test> db.Die Info.finden()
[
_id: ObjectID ("63C4D968AC8011ECC27D7A35"), ID: 1, arr: [2, 4, 6],
_id: ObjectID ("63C4D968AC8011ECC27D7A36"), ID: 2, arr: [3, 5, 7],
_id: ObjectID ("63C4D968AC8011ECC27D7A37"), ID: 3, arr: []
]

In diesem Beispiel wird der Kartenoperator verwendet, um jedes Element in das Array „arr“ für das Dokument für alle drei Datensätze hinzuzufügen. Die Eingabe für den Kartenoperator ist auf "$ arr" eingestellt, wodurch das Array "arr" in den Dokumenten der "Info" -Kollektion verweist. Der Parameter „AS“ wird auf „n“ eingestellt, das als Platzhalter für jedes Element im Array innerhalb der Funktion verwendet wird. Der Parameter „In“ enthält die Funktion, die in diesem Fall der $ -D -Operator ist, der jedes Element eines "arr" -Array durch Hinzufügen von 1 aktualisiert. Die Ausgabe dieses Vorgangs ist ein neues Array mit der aktualisierten Anzahl von Elementen, aber jedes Element ist die Summe des ursprünglichen Elements und „1“, wie in der folgenden Ausgabe angezeigt:

Test> db.Die Info.Aggregate ([$ project: a: $ map: input: "$ arr", als: "n", in: $ add: ["$$ n", 1]])
[
_id: ObjectID ("63C4D968AC8011ECC27D7A35"), A: [3, 5, 7],
_id: ObjectID ("63C4D968AC8011ECC27D7A36"), A: [4, 6, 8],
_id: ObjectID ("63C4D968AC8011ECC27D7A37"), a: []
]

Beispiel 2:

Lassen Sie uns ein weiteres Beispiel für die Verwendung des „Karte“ -Preibers von MongoDB haben. Ab dieser Illustration sollten Sie in Ihrer Testdatenbank eine neue Sammlung mit dem Namen „Info“ erstellen. Die Methode createCollection () wird verwendet, um eine neue Sammlung in der aktuellen Datenbank zu erstellen, die "Test" ist. Da wir es bereits über die Methode „CreateCollection“ der Datenbank erstellt haben, überspringen wir diesen Schritt hier.

Die folgende Abfrage verwendet die MongoDB -Befehlszeilenschnittstelle (CLI), um mehrere Dokumente in eine Sammlung mit dem Namen "Daten" einzufügen. Jedes Dokument repräsentiert eine Stadt und ihre Entfernung in Meilen zu den anderen Standorten. Der Befehl verwendet die Methode InsertMany (), um die drei Dokumente gleichzeitig einzufügen. Jedes Dokument verfügt. Die Methode InsertMany () gibt ein Objekt mit den Eigenschaften „Anerkannt“ und „IniseDIDs“ zurück, die bestätigt, dass der Vorgang erfolgreich ist und die eindeutigen ObjektIDs bereitstellt, die jedem eingefügten Dokument zugewiesen sind.

Test> db.Daten.InsertMany (["Stadt": "Newyork", "Distanz": [22.56, 66.7, 88.1],
… "Stadt": "London", "Distanz": [77.76, 14.72, 11.56],
… "Stadt": "Texas", "Distanz": [44.70, 64.99, 94.6]])

Anerkannt: wahr,
InsertDIDs:
'0': ObjectID ("63C4E24CAC8011ECC27D7A38"),
'1': ObjectID ("63C4E24CAC8011ECC27D7A39"),
'2': ObjectID ("63C4E24CAC8011ECC27D7A3A")

Diese Abfrage wird verwendet, um alle Dokumente aus einer Sammlung mit dem Titel "Daten" abzurufen. Die Find () -Methode wird mit einer leeren Abfrage verwendet, was bedeutet, dass sie alle Dokumente in der Sammlung zurückgibt. Die Ausgabe ist ein Array von Dokumenten, die mit der Abfrage übereinstimmen, in der jedes Dokument ein Feld „_id“ enthält, das ein eindeutiges Objekt ist, das ihm zugewiesen ist. Diese Abfrage zeigt alle Dokumente, die eingefügt wurden.

Test> db.Daten.finden()
[
_id: objectId ("63c4e24cac8011ecc27d7a38"), Stadt: 'Newyork', Distanz: [22.56, 66.7, 88.1],
_id: objectId ("63c4e24cac8011ecc27d7a39"), Stadt: 'London', Distanz: [77.76, 14.72, 11.56],
_id: ObjectID ("63c4e24cac8011ecc27d7a3a"), Stadt: 'Texas', Distanz: [44.7, 64.99, 94.6]
]

Die folgende Abfrage verwendet die MongoDB -Datenbank "Test". Die Aggregate () -Methode wird mit einem Array verwendet, das eine einzelne Pipeline -Stufe enthält, die die $ -Projekt -Phase ist. Die $ Project -Phase wird verwendet, um die Dokumente in der Sammlung durch Angabe eines neuen Feldersatzes neu. In diesem Fall wird das Stadtfeld durchlaufen und ein neues Feld „Adj“ wird hinzugefügt. Das neue Feld „Adj“ wird mit dem $ MAP -Operator erstellt, der einen angegebenen Ausdruck auf jedes Element eines Eingangsarrays anwendet und ein Ausgabearray mit derselben Anzahl von Elementen zurückgibt.

Der $ MAP -Operator nimmt drei Argumente ein: das Eingabearray "$ Distanz", ein variabler Name für das aktuelle Element im Eingabearray, das "DC" ist, und ein Ausdruck, der auf jedes Element des Eingabearrays angewendet wird. In diesem Fall besteht der Ausdruck darin, den Dezimalwert der Entfernung mit dem $ Trunc -Operator abzuschneiden. Das Ergebnis ist eine Reihe von Dokumenten mit der gleichen Struktur wie die ursprünglichen Dokumente, jedoch mit einem zusätzlichen „Adj“ -Feld, das eine Reihe von Ganzzahlen enthält, die aus dem Feld „Entfernung“ abgeschnitten sind.

Test> db.Daten.Aggregate ([$ Project: City: "$ City", adj:
… $ MAP: Eingabe: "$ distanz", als: "dc", in: $ trunc: "$$ dc"])
[
_id: ObjectID ("63c4e24cac8011ecc27d7a38"), Stadt: 'Newyork', Adj: [22, 66, 88],
_id: ObjectID ("63c4e24cac8011ecc27d7a39"), Stadt: 'London', adj: [77, 14, 11],
_id: ObjectID ("63c4e24cac8011ecc27d7a3a"), Stadt: 'Texas', adj: [44, 64, 94]
]

Abschluss

Dieser Leitfaden erläutert die Verwendung des „MAP“ -Operators in MongoDB in seiner Einführung sehr deutlich. Um die Erklärung zu unterstützen, die wir in der Einführung gegeben haben, haben wir zwei verwandte Beispiele in diesem Artikel erläutert. Wenn Sie diese Beispiele durchlaufen, können Sie einem Array -Element eines bestimmten Dokuments einen Wert hinzufügen und die Dezimalpunkte von bestimmten Array -Elementen abschneiden. Zusammenfassend lässt sich sagen. Es ist einfach zu bedienen und kann in Kombination mit den anderen Aggregationsoperatoren verwendet werden, um komplexere Transformationen durchzuführen. Mit $ MAP können die Entwickler die Daten leicht manipulieren und sie für ihre Anwendungen nützlicher machen.