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.