In MongoDB der cursor.forEach()
-Methode iteriert den Cursor, um eine JavaScript-function
anzuwenden zu jedem Dokument vom Cursor.
Syntax
Die Syntax lautet wie folgt:
db.collection.find().forEach(<function>)
Wobei collection
ist der Name der Sammlung, in der sich die Dokumente befinden.
Die <function>
Signatur enthält ein einzelnes Argument, das dem aktuellen Dokument zur Verarbeitung übergeben wird.
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 den forEach()
verwenden Methode in Verbindung mit find()
Methode, um diese Dokumente zu durchlaufen, während eine JavaScript-Funktion auf jedes Dokument angewendet wird.
Beispiel:
db.products.find().forEach(
function(p) {
print(
p.product.replace("Left","Right")
);
}
);
Ergebnis:
Right Handed Screwdriver Right Blinker Long Weight
Fehler?
Wenn Sie eine Fehlermeldung erhalten, sehen Sie etwa so aus:
uncaught exception: TypeError: db.products.findOne(...).forEach 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 forEach()
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.