MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mapa do MongoDB()


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.