No MongoDB, o
cursor.map()
O método aplica uma função a cada documento visitado pelo cursor e combina os valores de retorno em uma matriz. Sintaxe
A sintaxe fica assim:
db.collection.find().map(<function>)
Onde
collection
é o nome da coleção na qual os documentos residem. E onde
<function>
é a função a ser aplicada a cada documento visitado pelo cursor. 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
map()
método em conjunto com o find()
para percorrer esses documentos, enquanto aplica uma função a cada documento. Exemplo:
db.products.find().map(
function(p) {
p = p.product.replace("Left","Right");
return p;
}
);
Resultado:
[ "Right Handed Screwdriver", "Right Blinker", "Long Weight" ]
Nesse caso, iteramos pelo cursor e substituímos as instâncias da string
Left
com Right
. Em seguida, retornamos o resultado. O resultado é retornado como uma matriz.
Erro?
Se você receber um erro, como este:
uncaught exception: TypeError: db.products.findOne(...).map 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, map()
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.