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.