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.