I MongoDB er cursor.forEach() metoden gentager markøren for at anvende en JavaScript funktion til hvert dokument fra markøren.
Syntaks
Syntaksen ser sådan ud:
db.collection.find().forEach(<function>)
Hvor samling er navnet på den samling, som dokumenterne ligger i.
<-funktionen> signaturen indeholder et enkelt argument, der videregives til det aktuelle dokument, der skal behandles.
Eksempel
Antag, at vi har en samling kaldet produkter der indeholder følgende tre dokumenter:
{ "_id" : 1, "product" : "Left Handed Screwdriver" }
{ "_id" : 2, "product" : "Left Blinker" }
{ "_id" : 3, "product" : "Long Weight" }
Vi kan bruge forEach() metode i forbindelse med find() metode til at gentage disse dokumenter, mens du anvender en JavaScript-funktion til hvert dokument.
Eksempel:
db.products.find().forEach(
function(p) {
print(
p.product.replace("Left","Right")
);
}
); Resultat:
Right Handed Screwdriver Right Blinker Long Weight
Fejl?
Hvis du får en fejl, som denne:
uncaught exception: TypeError: db.products.findOne(...).forEach is not a function : @(shell):1:1
Sørg for, at du bruger find() og ikke findOne() .
findOne() metoden returnerer det faktiske dokument og ikke en markør. Derfor forEach() virker ikke med findOne() . Også selvom det virkede, findOne() returnerer kun et enkelt dokument, og derfor ville der ikke være behov for at gentage flere dokumenter.