sql >> Base de Datos >  >> NoSQL >> MongoDB

Mapa MongoDB()

En MongoDB, el cursor.map() El método aplica una función a cada documento visitado por el cursor y combina los valores devueltos en una matriz.

Sintaxis

La sintaxis es así:

db.collection.find().map(<function>)

Donde collection es el nombre de la colección en la que residen los documentos.

Y donde <function> es la función a aplicar a cada documento visitado por el cursor.

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 el map() método junto con find() método para iterar a través de esos documentos, mientras se aplica una función a cada documento.

Ejemplo:

db.products.find().map(
  function(p) {
    p = p.product.replace("Left","Right");
    return p;
  }
);

Resultado:

[ "Right Handed Screwdriver", "Right Blinker", "Long Weight" ]

En este caso, iteramos a través del cursor y reemplazamos las instancias de la cadena Left con Right . Luego devolvimos el resultado.

El resultado se devuelve como una matriz.

¿Error?

Si obtiene un error, como este:

uncaught exception: TypeError: db.products.findOne(...).map 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, map() 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.