In MongoDB, de cursor.forEach()
methode herhaalt de cursor om een JavaScript function
toe te passen naar elk document vanaf de cursor.
Syntaxis
De syntaxis gaat als volgt:
db.collection.find().forEach(<function>)
Waar collection
is de naam van de collectie waarin de documenten zich bevinden.
De <function>
handtekening bevat een enkel argument dat wordt doorgegeven aan het huidige document om te verwerken.
Voorbeeld
Stel dat we een verzameling hebben met de naam products
die de volgende drie documenten bevat:
{ "_id" : 1, "product" : "Left Handed Screwdriver" }
{ "_id" : 2, "product" : "Left Blinker" }
{ "_id" : 3, "product" : "Long Weight" }
We kunnen de forEach()
. gebruiken methode in combinatie met de find()
methode om door die documenten te bladeren, terwijl een JavaScript-functie op elk document wordt toegepast.
Voorbeeld:
db.products.find().forEach(
function(p) {
print(
p.product.replace("Left","Right")
);
}
);
Resultaat:
Right Handed Screwdriver Right Blinker Long Weight
Fout?
Als u een foutmelding krijgt, zoals deze:
uncaught exception: TypeError: db.products.findOne(...).forEach is not a function : @(shell):1:1
Zorg ervoor dat u find()
. gebruikt en niet findOne()
.
De findOne()
methode retourneert het eigenlijke document en niet een cursor. Daarom, forEach()
werkt niet met findOne()
. En zelfs als het wel zou werken, findOne()
retourneert slechts één document en daarom is het niet nodig om door meerdere documenten te bladeren.