Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

$map (operador de expresión)

$map

Aplica una expresión a cada elemento de un arreglo y devuelve un arreglo con los resultados aplicados.

Puedes usar $map para implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

La expresión $map tiene la siguiente sintaxis:

{ $map: { input: <expression>, as: <string>, in: <expression> } }
Campo
Especificación

input

Una expresión que se evalúa en un arreglo.

Si input se resuelve en null o hace referencia a un campo que falta, $map devuelve null.

Si input se resuelve en un valor que no es un arreglo ni nulo, el pipeline presenta errores.

as

Opcional. Un nombre para la variable que representa cada elemento individual del arreglo input. Si no se especifica un nombre, el nombre de la variable por defecto es this.

in

Una expresión que se aplica a cada elemento del arreglo input. La expresión hace referencia a cada elemento individualmente con el nombre de variable especificado en as.

Para obtener más información sobre las expresiones, consulta Expresiones.

Los ejemplos de esta página utilizan datos del conjunto de datos sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en su implementación autogestionada de MongoDB, consulte Cargar el conjunto de datos de ejemplo. Si realizó alguna modificación en las bases de datos de ejemplo, es posible que deba eliminarlas y volver a crearlas para ejecutar los ejemplos de esta página.

La siguiente operación de agregación usa $map con la expresión $add para añadir 10 a cada elemento del arreglo location.geo.coordinates:

db.theaters.aggregate( [
{
$match: {
theaterId: { $in: [ 1000, 1003, 1008 ] }
}
},
{
$project: {
_id: 0,
theaterId: 1,
adjustedCoordinates: {
$map: {
input: "$location.geo.coordinates",
as: "coord",
in: { $add: [ "$$coord", 10 ] }
}
}
}
},
{ $sort: { theaterId: 1 } }
] )
[
{ theaterId: 1000, adjustedCoordinates: [ -83.24565, 54.85466 ] },
{ theaterId: 1003, adjustedCoordinates: [ -66.512016, 48.29697 ] },
{ theaterId: 1008, adjustedCoordinates: [ -111.96328, 48.367649 ] }
]

La siguiente operación de agregación utiliza $map para truncate cada elemento en el arreglo location.geo.coordinates a su número entero:

db.theaters.aggregate( [
{
$match: {
theaterId: { $in: [ 1000, 1003, 1008 ] }
}
},
{
$project: {
_id: 0,
theaterId: 1,
integerCoordinates: {
$map: {
input: "$location.geo.coordinates",
as: "coord",
in: { $trunc: "$$coord" }
}
}
}
},
{ $sort: { theaterId: 1 } }
] )
[
{ theaterId: 1000, integerCoordinates: [ -93, 44 ] },
{ theaterId: 1003, integerCoordinates: [ -76, 38 ] },
{ theaterId: 1008, integerCoordinates: [ -121, 38 ] }
]

La siguiente operación de agregación utiliza la etapa $addFields para agregar un nuevo campo genreScores. La operación utiliza $map para aplicar $multiply y $add a cada elemento del arreglo genres, calculando una puntuación basada en el recuento de caracteres de cada nombre de género:

db.movies.aggregate( [
{
$match: { runtime: { $gt: 1000 } }
},
{
$addFields: {
genreScores: {
$map: {
input: "$genres",
as: "genre",
in: {
$add: [
{ $multiply: [ { $strLenCP: "$$genre" }, 2 ] },
1
]
}
}
}
}
},
{ $project: { _id: 0, title: 1, genres: 1, genreScores: 1 } },
{ $sort: { title: 1 } }
] )
[
{
genres: [ 'Documentary', 'History', 'Sport' ],
title: 'Baseball',
genreScores: [ 23, 15, 11 ]
},
{
genres: [ 'Action', 'Adventure', 'Drama' ],
title: 'Centennial',
genreScores: [ 13, 19, 11 ]
}
]

Para aprender más sobre las expresiones utilizadas en los ejemplos anteriores, consulte: