В 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()
връща само един документ и следователно няма да има нужда от повторение през множество документи.