V MongoDB, cursor.forEach()
metoda iteruje kurzor, aby použila function
JavaScriptu ke každému dokumentu od kurzoru.
Syntaxe
Syntaxe vypadá takto:
db.collection.find().forEach(<function>)
Kde collection
je název kolekce, ve které se dokumenty nacházejí.
<function>
podpis obsahuje jeden argument, který je předán aktuálnímu dokumentu ke zpracování.
Příklad
Předpokládejme, že máme kolekci nazvanou products
který obsahuje následující tři dokumenty:
{ "_id" : 1, "product" : "Left Handed Screwdriver" }
{ "_id" : 2, "product" : "Left Blinker" }
{ "_id" : 3, "product" : "Long Weight" }
Můžeme použít forEach()
ve spojení s metodou find()
metodu pro iteraci těchto dokumentů a při použití funkce JavaScript na každý dokument.
Příklad:
db.products.find().forEach(
function(p) {
print(
p.product.replace("Left","Right")
);
}
);
Výsledek:
Right Handed Screwdriver Right Blinker Long Weight
Chyba?
Pokud se zobrazí chyba, jako je tato:
uncaught exception: TypeError: db.products.findOne(...).forEach is not a function : @(shell):1:1
Ujistěte se, že používáte find()
a ne findOne()
.
findOne()
metoda vrací skutečný dokument a ne kurzor. Proto forEach()
nebude fungovat s findOne()
. Také, i když to fungovalo, findOne()
vrací pouze jeden dokument, a proto by nebylo nutné procházet více dokumenty.