W MongoDB cursor.forEach() metoda iteruje kursor, aby zastosować funkcję JavaScript do każdego dokumentu od kursora.
Składnia
Składnia wygląda tak:
db.collection.find().forEach(<function>)
Gdzie kolekcja to nazwa kolekcji, w której znajdują się dokumenty.
Przykład
Załóżmy, że mamy kolekcję o nazwie produkty który zawiera następujące trzy dokumenty:
{ "_id" : 1, "product" : "Left Handed Screwdriver" }
{ "_id" : 2, "product" : "Left Blinker" }
{ "_id" : 3, "product" : "Long Weight" }
Możemy użyć forEach() metoda w połączeniu z find() metoda iteracji przez te dokumenty, jednocześnie stosując funkcję JavaScript do każdego dokumentu.
Przykład:
db.products.find().forEach(
function(p) {
print(
p.product.replace("Left","Right")
);
}
); Wynik:
Right Handed Screwdriver Right Blinker Long Weight
Błąd?
Jeśli pojawi się błąd, taki jak ten:
uncaught exception: TypeError: db.products.findOne(...).forEach is not a function : @(shell):1:1
Upewnij się, że używasz find() a nie findOne() .
findOne() Metoda zwraca rzeczywisty dokument, a nie kursor. Dlatego forEach() nie będzie działać z findOne() . Ponadto, nawet jeśli to zadziałało, findOne() zwraca tylko jeden dokument, a zatem nie ma potrzeby przeglądania wielu dokumentów.