MongoDB $ MAP Operator

MongoDB $ MAP Operator
MongoDB es una popular base de datos de documentos NOSQL que se utiliza para almacenar y consultar las grandes cantidades de datos. Una de las potentes características de MongoDB es la capacidad de usar el operador $ MAP en tuberías de agregación para transformar los documentos en una colección. El operador $ MAP permite a los desarrolladores aplicar una función específica a cada elemento de una matriz y devuelve los valores transformados como una nueva matriz. El operador $ MAP se usa en la etapa de proyecto $ de una tubería de agregación y toma dos argumentos: la expresión de entrada y la expresión "as". La expresión de entrada es la matriz que desea transformar y la expresión "como" es la función que desea aplicar a cada elemento de la matriz. El operador de mapas $ devuelve una nueva matriz con los valores transformados. Comenzamos mostrando las bases de datos disponibles en MongoDB.
Prueba> Mostrar dbs
administrador 40.00 kib
Configuración 112.00 kib
Local 72.00 kib

Use la base de datos de "prueba" para comenzar a agregar algunos datos a una base de datos MongoDB, yo.mi. "Usar prueba".

Prueba> Usar prueba
ya en la prueba de DB

Ejemplo 1:

Aquí hay un ejemplo de usar el operador de mapas $ para cuadrar cada elemento de una matriz en una colección. Generamos una nueva colección llamada "Info" en la base de datos "Test" de MongoDB lanzando la función de createcollection de MongoDB. El método createCollection () devuelve un objeto con la propiedad "OK" y un valor de 1 que indica que la colección se crea correctamente.

Prueba> DB.CreateCollection ("Info")
OK: 1

Después de generar la colección, insertamos algunos registros de tipo matriz en ella. Por lo tanto, la función InsertMany se descarta aquí para agregar tres registros, cada uno que contiene el campo "ARR" de un tipo de matriz con algunos valores numéricos.

Prueba> DB.Información.insertMany ([id: 1, arr: [2, 4, 6], id: 2, arr: [3, 5, 7], id: 3, arr: []])
Reconocido: Verdadero,
insertedids:
'0': ObjectId ("63C4D968AC8011ECC27D7A35"),
'1': ObjectId ("63C4D968AC8011ECC27D7A36"),
'2': ObjectId ("63C4D968AC8011ECC27D7A37")

Después de la inserción exitosa de los registros en la colección "Info", puede echarle un vistazo utilizando la función "Buscar" como utilizamos en la siguiente consulta:

Prueba> DB.Información.encontrar()
[
_id: ObjectId ("63C4D968AC8011ECC27D7A35"), ID: 1, arr: [2, 4, 6],
_id: ObjectId ("63C4D968AC8011ECC27D7A36"), ID: 2, arr: [3, 5, 7],
_id: ObjectId ("63C4D968AC8011ECC27D7A37"), ID: 3, arr: []
]

En este ejemplo, el operador del mapa se usa para agregar cada elemento en la matriz "ARR" para el documento para los tres registros. La entrada para el operador del mapa se establece en "$ arr" que hace referencia a la matriz "arr" en los documentos de la colección "info". El parámetro "AS" se establece en "n" que se usa como marcador de posición para cada elemento en la matriz dentro de la función. El parámetro "in" contiene la función que, en este caso, es el operador $ add que actualiza cada elemento de una matriz "ARR" agregando 1. La salida de esta operación es una nueva matriz con el número actualizado de elementos, pero cada elemento es la suma del elemento original y "1" como se muestra en la siguiente salida:

Prueba> DB.Información.Aggregate ([$ Project: a: $ map: input: "$ arr", as: "n", in: $ add: ["$$ n", 1]]))
[
_id: ObjectId ("63C4D968AC8011ECC27D7A35"), A: [3, 5, 7],
_id: ObjectId ("63C4D968AC8011ECC27D7A36"), A: [4, 6, 8],
_id: ObjectId ("63C4D968AC8011ECC27D7A37"), A: []
]

Ejemplo 2:

Tengamos otro ejemplo de utilizar el operador de "mapa" de MongoDB. Comenzando con esta ilustración, debe crear una nueva colección llamada "Información" en su base de datos de prueba. El método createCollection () se utiliza para crear una nueva colección en la base de datos actual que es "prueba". Dado que ya lo creamos a través del método "CreateCollection" de la base de datos, omitimos ese paso aquí.

La siguiente consulta utiliza la interfaz de línea de comandos MongoDB (CLI) para insertar múltiples documentos en una colección llamada "Datos". Cada documento representa una ciudad y su distancia en millas a los otros lugares. El comando usa el método InsertMany () para insertar los tres documentos a la vez. Cada documento tiene un campo de "ciudad" con un valor de cadena y un campo de "distancia" con una variedad de números. El método InsertMany () devuelve un objeto con las propiedades "reconocidas" y "Insertedids" que confirma que la operación es exitosa y proporciona los objetos únicos asignados a cada documento insertado.

Prueba> DB.Datos.InsertMany (["Ciudad": "Newyork", "Distancia": [22.56, 66.7, 88.1],
... "Ciudad": "Londres", "Distancia": [77.76, 14.72, 11.56],
... "Ciudad": "Texas", "Distancia": [44.70, 64.99, 94.6]])

Reconocido: verdadero,
insertedids:
'0': ObjectId ("63C4E24CAC8011ECC27D7A38"),
'1': ObjectId ("63C4E24CAC8011ECC27D7A39"),
'2': ObjectId ("63C4E24CAC8011ECC27D7A3A")

Esta consulta se utiliza para recuperar todos los documentos de una colección llamada "Datos". El método find () se usa con una consulta vacía , lo que significa que devuelve todos los documentos en la colección. La salida es una variedad de documentos que coinciden con la consulta donde cada documento tiene un campo "_id" que es un objeto único asignado a él, un campo de "ciudad" con un valor de cadena y un campo de "distancia" con una variedad de números. Esta consulta muestra todos los documentos que se insertaron.

Prueba> DB.Datos.encontrar()
[
_id: ObjectId ("63C4E24CAC8011ECC27D7A38"), Ciudad: 'Newyork', Distancia: [22.56, 66.7, 88.1],
_id: ObjectId ("63C4E24CAC8011ECC27D7A39"), Ciudad: 'Londres', Distancia: [77.76, 14.72, 11.56],
_id: ObjectId ("63C4E24CAC8011ECC27D7A3A"), Ciudad: 'Texas', Distancia: [44.7, 64.99, 94.6]
]

La siguiente consulta utiliza la base de datos "Test" de MongoDB para realizar una operación agregada en la colección "Datos". El método agregado () se utiliza con una matriz que contiene una sola etapa de tubería que es la etapa de $ proyecto. La etapa de proyecto $ se utiliza para remodelar los documentos de la colección especificando un nuevo conjunto de campos. En este caso, se pasa el campo de la ciudad y se agrega un nuevo campo, "adj". El nuevo campo "ADJ" se crea utilizando el operador $ MAP que aplica una expresión especificada en cada elemento de una matriz de entrada y devuelve una matriz de salida con el mismo número de elementos.

El operador de MAP $ toma tres argumentos: la matriz de entrada que es "$ Distancia", un nombre variable para el elemento actual en la matriz de entrada que es "DC" y una expresión que se aplica a cada elemento de la matriz de entrada. En este caso, la expresión es truncar el valor decimal de la distancia utilizando el operador $ Trunc. El resultado es una variedad de documentos con la misma estructura que los documentos originales, pero con un campo adicional "adj" que contiene una serie de enteros que se truncan desde el campo de "distancia".

Prueba> DB.Datos.agregate ([$ Project: City: "$ City", adj:
... $ MAP: Entrada: "$ Distancia", AS: "DC", en: $ trunc: "$$ dc"]))
[
_id: ObjectId ("63C4E24CAC8011ECC27D7A38"), Ciudad: 'Newyork', adj: [22, 66, 88],
_id: ObjectId ("63C4E24CAC8011ECC27D7A39"), Ciudad: 'Londres', Jus. [77, 14, 11],
_id: ObjectId ("63C4E24CAC8011ECC27D7A3A"), Ciudad: 'Texas', adj: [44, 64, 94]
]

Conclusión

Esta guía elabora sobre el uso del operador "mapa" en MongoDB muy claramente en su introducción. Para apoyar la explicación que proporcionamos en la introducción, explicamos dos ejemplos relacionados en este artículo. Al pasar por estos ejemplos, puede agregar un valor a un elemento de matriz de un documento en particular y puede truncar los puntos decimales de elementos de matriz específicos. En conclusión, el operador de mapas $ de MongoDB es una característica poderosa que permite a los desarrolladores transformar la matrices de documentos en una colección. Es fácil de usar y se puede usar en combinación con los otros operadores de agregación para realizar transformaciones más complejas. Con $ MAP, los desarrolladores pueden manipular fácilmente los datos y hacerlo más útil para sus aplicaciones.