MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB-Karte()

In MongoDB die cursor.map() Methode wendet eine Funktion auf jedes vom Cursor besuchte Dokument an und kombiniert die Rückgabewerte in einem Array.

Syntax

Die Syntax lautet wie folgt:

db.collection.find().map(<function>)

Wobei collection ist der Name der Sammlung, in der sich die Dokumente befinden.

Und wo <function> ist die Funktion, die auf jedes vom Cursor besuchte Dokument anzuwenden ist.

Beispiel

Angenommen, wir haben eine Sammlung namens products das die folgenden drei Dokumente enthält:

{ "_id" : 1, "product" : "Left Handed Screwdriver" }
{ "_id" : 2, "product" : "Left Blinker" }
{ "_id" : 3, "product" : "Long Weight" }

Wir können die map() verwenden Methode in Verbindung mit find() Methode, um diese Dokumente zu durchlaufen, während eine Funktion auf jedes Dokument angewendet wird.

Beispiel:

db.products.find().map(
  function(p) {
    p = p.product.replace("Left","Right");
    return p;
  }
);

Ergebnis:

[ "Right Handed Screwdriver", "Right Blinker", "Long Weight" ]

In diesem Fall haben wir den Cursor durchlaufen und Instanzen der Zeichenfolge Left ersetzt mit Right . Das Ergebnis haben wir dann zurückgegeben.

Das Ergebnis wird als Array zurückgegeben.

Fehler?

Wenn Sie eine Fehlermeldung erhalten, sehen Sie etwa so aus:

uncaught exception: TypeError: db.products.findOne(...).map is not a function :
@(shell):1:1

Stellen Sie sicher, dass Sie find() verwenden und nicht findOne() .

Das findOne() -Methode gibt das eigentliche Dokument und keinen Cursor zurück. Daher map() funktioniert nicht mit findOne() . Auch, selbst wenn es funktioniert hat, findOne() gibt nur ein einzelnes Dokument zurück, und daher wäre es nicht erforderlich, mehrere Dokumente zu durchlaufen.