Trong MongoDB, cursor.forEach()
phương pháp lặp lại con trỏ để áp dụng một function
trong JavaScript đến từng tài liệu từ con trỏ.
Cú pháp
Cú pháp như sau:
db.collection.find().forEach(<function>)
Nơi collection
là tên của bộ sưu tập chứa các tài liệu.
<function>
chữ ký bao gồm một đối số duy nhất được chuyển vào tài liệu hiện tại để xử lý.
Ví dụ
Giả sử chúng ta có một bộ sưu tập được gọi là products
chứa ba tài liệu sau:
{ "_id" : 1, "product" : "Left Handed Screwdriver" }
{ "_id" : 2, "product" : "Left Blinker" }
{ "_id" : 3, "product" : "Long Weight" }
Chúng ta có thể sử dụng forEach()
kết hợp với find()
để lặp lại các tài liệu đó trong khi áp dụng một hàm JavaScript cho mỗi tài liệu.
Ví dụ:
db.products.find().forEach(
function(p) {
print(
p.product.replace("Left","Right")
);
}
);
Kết quả:
Right Handed Screwdriver Right Blinker Long Weight
Lỗi?
Nếu bạn gặp lỗi, như sau:
uncaught exception: TypeError: db.products.findOne(...).forEach is not a function : @(shell):1:1
Đảm bảo rằng bạn đang sử dụng find()
chứ không phải findOne()
.
findOne()
phương thức trả về tài liệu thực chứ không phải con trỏ. Do đó, forEach()
sẽ không hoạt động với findOne()
. Ngoài ra, ngay cả khi nó hoạt động, findOne()
chỉ trả về một tài liệu duy nhất và do đó, sẽ không cần phải lặp lại nhiều tài liệu.