No MongoDB, o
cursor.forEach()
O método itera o cursor para aplicar uma function
JavaScript para cada documento a partir do cursor. Sintaxe
A sintaxe fica assim:
db.collection.find().forEach(<function>)
Onde
collection
é o nome da coleção na qual os documentos residem. A
<function>
assinatura inclui um único argumento que é passado para o documento atual para processar. Exemplo
Suponha que tenhamos uma coleção chamada
products
que contém os três documentos a seguir:{ "_id" : 1, "product" : "Left Handed Screwdriver" }
{ "_id" : 2, "product" : "Left Blinker" }
{ "_id" : 3, "product" : "Long Weight" }
Podemos usar o
forEach()
método em conjunto com o find()
para percorrer esses documentos, enquanto aplica uma função JavaScript a cada documento. Exemplo:
db.products.find().forEach(
function(p) {
print(
p.product.replace("Left","Right")
);
}
);
Resultado:
Right Handed Screwdriver Right Blinker Long Weight
Erro?
Se você receber um erro, como este:
uncaught exception: TypeError: db.products.findOne(...).forEach is not a function : @(shell):1:1
Certifique-se de estar usando
find()
e não findOne()
. O
findOne()
retorna o documento real e não um cursor. Portanto, forEach()
não funcionará com findOne()
. Além disso, mesmo que funcionasse, findOne()
retorna apenas um único documento e, portanto, não haveria necessidade de iterar em vários documentos.