В MongoDB, cursor.forEach() метод итерира курсора, за да приложи JavaScript function към всеки документ от курсора.
Синтаксис
Синтаксисът е така:
db.collection.find().forEach(<function>)
Където collection е името на колекцията, в която се намират документите.
<function> подпис включва единичен аргумент, който се предава на текущия документ за обработка.
Пример
Да предположим, че имаме колекция, наречена products който съдържа следните три документа:
{ "_id" : 1, "product" : "Left Handed Screwdriver" }
{ "_id" : 2, "product" : "Left Blinker" }
{ "_id" : 3, "product" : "Long Weight" }
Можем да използваме forEach() метод във връзка с find() метод за итерация през тези документи, като същевременно се прилага JavaScript функция към всеки документ.
Пример:
db.products.find().forEach(
function(p) {
print(
p.product.replace("Left","Right")
);
}
); Резултат:
Right Handed Screwdriver Right Blinker Long Weight
Грешка?
Ако получите грешка, по следния начин:
uncaught exception: TypeError: db.products.findOne(...).forEach is not a function : @(shell):1:1
Уверете се, че използвате find() а не findOne() .
findOne() метод връща действителния документ, а не курсор. Следователно, forEach() няма да работи с findOne() . Също така, дори и да работи, findOne() връща само един документ и следователно няма да има нужда от повторение през множество документи.