En MongoDB, el cursor.forEach() itera el cursor para aplicar una function de JavaScript a cada documento desde el cursor.
Sintaxis
La sintaxis es así:
db.collection.find().forEach(<function>)
Donde collection es el nombre de la colección en la que residen los documentos.
El <function> firma incluye un solo argumento que se pasa el documento actual para procesar.
Ejemplo
Supongamos que tenemos una colección llamada products que contiene los siguientes tres documentos:
{ "_id" : 1, "product" : "Left Handed Screwdriver" }
{ "_id" : 2, "product" : "Left Blinker" }
{ "_id" : 3, "product" : "Long Weight" }
Podemos usar forEach() método junto con find() para iterar a través de esos documentos, mientras se aplica una función de JavaScript a cada documento.
Ejemplo:
db.products.find().forEach(
function(p) {
print(
p.product.replace("Left","Right")
);
}
); Resultado:
Right Handed Screwdriver Right Blinker Long Weight
¿Error?
Si obtiene un error, como este:
uncaught exception: TypeError: db.products.findOne(...).forEach is not a function : @(shell):1:1
Asegúrate de estar usando find() y no findOne() .
El findOne() método devuelve el documento real y no un cursor. Por lo tanto, forEach() no funcionará con findOne() . Además, incluso si funcionó, findOne() solo devuelve un solo documento y, por lo tanto, no habría necesidad de iterar a través de varios documentos.