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.