Operador de mapa de mongodb $

Operador de mapa de mongodb $
MongoDB é um banco de dados popular orientado a documentos NoSQL que é usado para armazenar e consultar as grandes quantidades de dados. Uma das características poderosas do MongoDB é a capacidade de usar o operador $ mapa em pipelines de agregação para transformar os documentos em uma coleção. O operador $ mapa permite que os desenvolvedores apliquem uma função específica a cada elemento de uma matriz e retorne os valores transformados como uma nova matriz. O operador $ mapa é usado no estágio $ projeto de um pipeline de agregação e leva dois argumentos: a expressão de entrada e a expressão “As”. A expressão de entrada é a matriz que você deseja transformar e a expressão “as” é a função que você deseja aplicar a cada elemento da matriz. O operador $ mapa retorna uma nova matriz com os valores transformados. Começamos exibindo os bancos de dados disponíveis em MongoDB.
Teste> Mostrar DBS
Admin 40.00 Kib
Config 112.00 Kib
Local 72.00 Kib

Use o banco de dados "teste" para começar a adicionar alguns dados em um banco de dados MongoDB, i i.e. “Teste de uso”.

Teste> Usar teste
já no teste de banco de dados

Exemplo 1:

Aqui está um exemplo de uso do operador $ mapa para encaixar cada elemento de uma matriz em uma coleção. Geramos uma nova coleção chamada "Info" no banco de dados "Test" do MongoDB, lançando a função CreateCollection do MongoDBB. O método CreateCollection () retorna um objeto com a propriedade "OK" e um valor de 1 que indica que a coleção é criada com sucesso.

Teste> dB.createCollection ("info")
ok: 1

Depois que a coleção é gerada, inserimos alguns registros do tipo Array. Portanto, a função InsertMany é eliminada aqui para adicionar três registros, cada um contendo o campo "ARR" de um tipo de matriz com alguns valores numéricos.

Teste> dB.Informações.insertMany ([id: 1, arr: [2, 4, 6], id: 2, arr: [3, 5, 7], id: 3, arr: []])
reconhecido: verdadeiro,
inserdids:
'0': objectId ("63C4D968AC8011ECC27D7A35"),
'1': objectId ("63C4D968AC8011ECC27D7A36"),
'2': objectId ("63C4D968AC8011ECC27D7A37")

Após a inserção bem-sucedida dos registros na coleção "Info", você pode dar uma olhada nela usando a função "Find", como usamos na consulta seguinte:

Teste> dB.Informações.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: []
]

Neste exemplo, o operador do mapa é usado para adicionar cada elemento na matriz "ARR" para o documento para todos os três registros. A entrada para o operador do mapa está definida como "$ arr", que faz referência à matriz "ARR" nos documentos da coleção "info". O parâmetro “AS” é definido como “n”, que é usado como um espaço reservado para cada elemento na matriz dentro da função. O parâmetro "in" contém a função que, neste caso, é o operador $ add que atualiza cada elemento de uma matriz "arr", adicionando 1. A saída desta operação é uma nova matriz com o número atualizado de elementos, mas cada elemento é a soma do elemento original e "1", conforme exibido na saída a seguir:

Teste> dB.Informações.agregado ([$ Project: a: $ map: input: "$ arr", como: "n", em: $ add: ["$$ n", 1]]))
[[
_id: objectId ("63C4D968AC8011ECC27D7A35"), A: [3, 5, 7],
_id: objectId ("63C4D968AC8011ECC27D7A36"), A: [4, 6, 8],
_id: objectId ("63C4D968AC8011ECC27D7A37"), A: []
]

Exemplo 2:

Vamos ter outro exemplo de utilização do operador "mapa" do MongoDB. Começando com esta ilustração, você deve criar uma nova coleção chamada "Info" em seu banco de dados de teste. O método CreateCollection () é usado para criar uma nova coleção no banco de dados atual que é "teste". Desde que já o criamos através do método "CreateCollection" do banco de dados, ignoramos essa etapa aqui.

A consulta a seguir usa a interface da linha de comando do MongoDB (CLI) para inserir vários documentos em uma coleção chamada "dados". Cada documento representa uma cidade e sua distância em quilômetros até os outros locais. O comando usa o método insertMany () para inserir os três documentos de uma só vez. Cada documento tem um campo de “cidade” com um valor de string e um campo de “distância” com uma variedade de números. O método insertMany () retorna um objeto com as propriedades "reconhecidas" e "inserdids", que confirma que a operação é bem -sucedida e fornece os objetos exclusivos que são atribuídos a cada documento inserido.

Teste> dB.Dados.InsertMany (["City": "Newyork", "Distância": [22.56, 66.7, 88.1],
… "City": "London", "Distance": [77.76, 14.72, 11.56],
… "City": "Texas", "Distância": [44.70, 64.99, 94.6]])

reconhecido: verdadeiro,
inserdids:
'0': objectId ("63C4E24CAC8011ECC27D7A38"),
'1': objectId ("63C4E24CAC8011ECC27D7A39"),
'2': objectId ("63C4E24CAC8011ECC27D7A3A")

Esta consulta é usada para recuperar todos os documentos de uma coleção chamada "dados". O método find () é usado com uma consulta vazia , o que significa que ele retorna todos os documentos da coleção. A saída é uma variedade de documentos que correspondem à consulta em que cada documento possui um campo "_id", que é um objeto exclusivo atribuído a ele, um campo "cidade" com um valor de string e um campo de "distância" com uma matriz de números. Esta consulta mostra todos os documentos que foram inseridos.

Teste> dB.Dados.encontrar()
[[
_id: objectId ("63C4E24CAC8011ECC27D7A38"), Cidade: 'NewYork', Distância: [22.56, 66.7, 88.1],
_id: objectId ("63C4E24CAC8011ECC27D7A39"), Cidade: 'Londres', Distância: [77.76, 14.72, 11.56],
_id: objectId ("63C4E24CAC8011ECC27D7A3A"), Cidade: 'Texas', Distância: [44.7, 64.99, 94.6]
]

A consulta a seguir usa o banco de dados MongoDB "Test" para executar uma operação agregada na coleção "Data". O método agregate () é usado com uma matriz que contém um único estágio de pipeline que é o estágio $ do projeto. A fase $ do projeto é usada para remodelar os documentos da coleção, especificando um novo conjunto de campos. Nesse caso, o campo da cidade é passado e um novo campo, "adj", é adicionado. O novo campo “adj” é criado usando o operador $ mapa, que aplica uma expressão especificada a cada elemento de uma matriz de entrada e retorna uma matriz de saída com o mesmo número de elementos.

O operador $ mapa leva três argumentos: a matriz de entrada que é "$ distance", um nome variável para o elemento atual na matriz de entrada que é "dc" e uma expressão aplicada a cada elemento da matriz de entrada. Nesse caso, a expressão é truncar o valor decimal da distância usando o operador $ trunc. O resultado é uma variedade de documentos com a mesma estrutura que os documentos originais, mas com um campo "adj" adicional que contém uma variedade de números inteiros que são truncados a partir do campo "Distância".

Teste> dB.Dados.agregado ([$ Project: City: "$ city", adj:
… $ Map: input: "$ distance", como: "dc", em: $ trunc: "$$ dc"])
[[
_id: objectId ("63C4E24CAC8011ECC27D7A38"), Cidade: 'NewYork', adj: [22, 66, 88],
_id: objectId ("63C4E24CAC8011ECC27D7A39"), Cidade: 'Londres', adj: [77, 14, 11],
_id: objectId ("63C4E24CAC8011ECC27D7A3A"), Cidade: 'Texas', adj: [44, 64, 94]
]

Conclusão

Este guia elabora o uso do operador "mapa" em MongoDB muito claramente em sua introdução. Para apoiar a explicação que fornecemos na introdução, explicamos dois exemplos relacionados neste artigo. Passando por esses exemplos, você pode adicionar um valor a um elemento de matriz de um documento específico e pode truncar os pontos decimais de elementos específicos da matriz. Em conclusão, o operador $ mapa de MongoDB é um recurso poderoso que permite aos desenvolvedores transformar as matrizes de documentos em uma coleção. É fácil de usar e pode ser usado em combinação com os outros operadores de agregação para realizar transformações mais complexas. Com o $ MAP, os desenvolvedores podem manipular facilmente os dados e torná -los mais úteis para seus aplicativos.