Operador Split MongoDB $

Operador Split MongoDB $

A palavra divisão refere -se à divisão de um campo específico ou divisão de uma corda em duas ou mais substringas. O operador dividido do MongoDB trabalha para criar substâncias para um campo específico de qualquer coleção que reside no banco de dados MongoDB. Assim como usamos o conceito de um subconjunto que pertence a um conjunto específico em matemática, as substringas criadas pelo operador dividido pertencem a um registro de campo específico. Neste guia do MongoDB, discutiremos o uso do operador dividido do MongoDB para dividir um valor de um campo específico a duas ou mais substringas usando delimitador.

Exemplo 01:

Para começar com o MongoDB, devemos configurar um novo esquema em seu banco de dados. No MongoDB, o esquema pode ser gerado usando coleções. Portanto, você deve ter o MongoDB Compass e o MongoDB Shell configurados no seu fim. Em primeiro lugar, você precisa de uma coleção no seu banco de dados que será utilizado para a aplicação do operador dividido. Portanto, estamos criando um "dados" com a função "createCollection", utilizando a coleção "dados".

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

Iniciamos a primeira ilustração com a inserção de registros em uma coleção de "dados". Portanto, a função insertMany () de MongoDB foi usada aqui para inserir 5 registros na coleção. Cada um desses registros possui 3 campos: id, nome e admissão. O reconhecimento de saída mostra que os registros são inseridos com sucesso na coleta de dados.

Teste> dB.Dados.InsertMany ([id: 1, nome: "Joe", AdmDate: "Dec-22-2020",
… Id: 2, nome: "Peter", admite: "Nov-14-2021",
… Id: 3, nome: "nina", admite: "Nov-14-2018",
… Id: 4, nome: "misha", admite: "janeiro-14-2022",
… Id: 5, nome: "Elen", admite: "set-4-2021"])
reconhecido: verdadeiro,
inserdids:
'0': objectId ("63BD2D8E01632FD3C02AB8D3"),
'1': objectId ("63BD2D8E01632FD3C02AB8D4"),
'2': objectId ("63BD2D8E01632FD3C02AB8D5"),
'3': objectId ("63BD2D8E01632FD3C02AB8D6"),
'4': objectId ("63BD2D8E01632FD3C02AB8D7")

Agora que os registros na coleta de dados são inseridos na forma de documentos, nós os exibiremos no console do MongoDB em um formato JSON. Assim, a função find () seria de grande ajuda aqui. O uso da função find () junto com a função foreach () tomando “printjson” como um argumento exibe os registros como a saída demonstra.

Teste> dB.Dados.encontrar().foreach (printjson)
_id: objectId ("63BD2D8E01632FD3C02AB8D3"), ID: 1, Nome: 'Joe', AdmDate: 'Dec-22-2020'
_id: objectId ("63BD2D8E01632FD3C02AB8D4"), ID: 2, Nome: 'Peter', AdmDate: 'Nov-14-2021'
_id: objectId ("63BD2D8E01632FD3C02AB8D5"), ID: 3, Nome: 'Nina', AdmDate: 'Nov-14-2018'
_id: objectId ("63BD2D8E01632FD3C02AB8D6"), ID: 4, Nome: 'Misha', AdmDate: 'Jan-14-2022'
_id: objectId ("63BD2D8E01632FD3C02AB8D7"), ID: 5, Nome: 'Elen', admite: 'set-4-2021'

Nesta ilustração, temos um campo de "AdmDate" que contém o caráter "-" entre mês, dia e ano. Estaremos usando o personagem “-“ para dividir o campo Admdate em substringas. Para usar o operador dividido, devemos lançar a função agregada do MongoDB junto com o nome da coleção que é "dados". Esta função começa com o operador "$ match" que é usado aqui para especificar o registro usando um de seus campos: id: 2 especifica o registro 2.

Depois disso, estamos lançando o operador do projeto para utilizar o operador dividido no campo "Admidato" da coleção de dados para dividir o campo em 3 substringas, tomando o personagem "-" como decímetro. O campo "Nome" será exibido como é enquanto o campo AdmDate de campo será substituído por um novo título "Data". A saída da execução desta instrução mostra o nome do campo do 2nd registro como é. O título do AdmDate Field é atualizado como "data" e seu valor foi dividido em três substringas através da ajuda de um delimitador "-" e exibido em uma matriz.

Teste> dB.Dados.agregado ([$ Match: id: 2, $ Project: Nome: 1, Data: $ split: ["$ AdmDate", "-"]]))
[_id: objectId ("63BD2D8E01632FD3C02AB8D4"), Nome: 'Peter', Data: ['Nov', '14', '2021']]

O uso do operador dividido apenas atualiza o resultado do tempo de execução sem afetar o registro real na coleção de banco de dados. A ilustração desse conceito foi exibida com a instrução de função find () e sua saída para a coleta de dados no snippet de código anexado. O campo "AdmDate" tem sido o mesmo antes do uso de um operador dividido.

Teste> dB.Dados.encontre (id: 2)
[_id: objectId ("63BD2D8E01632FD3C02AB8D4"), ID: 2, Nome: 'Peter', admite: 'Nov-14-2021']

Exemplo 02:

No exemplo acima, vimos como um operador dividido pode ser usado para dividir um recorde de campo em 2 ou mais substringas sem atualizar os registros originais. Para adicionar um campo atualizado (contém substrings) dentro da coleção, devemos lançar o operador de mesclagem junto com o operador dividido. Certifique -se de separar o operador de mescla. Esta consulta retorna nada em troca, pois atualizou os registros originais da coleção "dados" sem exibir nada no shell do MongoDB.

Teste> dB.Dados.agregado ([$ Project: dateInfo: $ split: ["$ AdmDate", "-"],
… $ Merge: "Data"]))

Usando o operador de mescla.

Teste> dB.Dados.encontrar()
[_id: objectId ("63BD2D8E01632FD3C02AB8D3"), ID: 1, Nome: 'Joe', AdmDate: 'Dec-22-2020', DateInfo: ['DEC', '22', '2020'],
_id: objectId ("63BD2D8E01632FD3C02AB8D4"), ID: 2, Nome: 'Peter', AdmDate: 'Nov-14-2021', DateInfo: ['Nov', '14', '2021'],
_id: objectId ("63BD2D8E01632FD3C02AB8D5"), ID: 3, Nome: 'Nina', AdmDate: 'Nov-14-2018', DateInfo: ['Nov', '14', '2018'],
_id: objectId ("63BD2D8E01632FD3C02AB8D6"), ID: 4, Nome: 'Misha', admite: 'Jan-14-2022', DateInfo: ['Jan', '14', '2022'] ',,
_id: objectId ("63BD2D8E01632FD3C02AB8D7"), ID: 5, Nome: 'Elen', admite: 'set-4-2021', dateInfo: ['sep', '4', '2021']]],

Exemplo 03:

Vamos criar uma nova coleção chamada "Pessoa" no mesmo banco de dados para usar para nossa nova ilustração. O createCollection () será eliminado com o nome da coleção em seu parâmetro.

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

Agora que a coleção é criada e está vazia, temos que adicionar documentos a ela. Como vamos adicionar mais de um registro na coleção "Pessoa", devemos usar a função insertMany () aqui. Os 5 registros precisavam ser adicionados e cada um contém 2 campos: id e nome. Usaremos o campo de nome para o operador dividido dividir sua string em substringas.

Teste> dB.Pessoa.insertMany ([id: 1, nome: "lia asif", id: 2, nome: "Joly woe", id: 3, nome: "Eden Robe", id: 4, nome: " William Robert Patinson ", id: 5, nome:" Justin P trudo "])
reconhecido: verdadeiro,
inserdids:
'0': objectId ("63BD33E401632FD3C02AB8E1"),
'1': objectId ("63BD33E401632FD3C02AB8E2"),
'2': objectId ("63BD33E401632FD3C02AB8E3"),
'3': objectId ("63BD33E401632FD3C02AB8E4"),
'4': objectId ("63BD33E401632FD3C02AB8E5")

Depois que esses 5 registros são adicionados com sucesso à coleção "Pessoa" por meio da função insertMany () do MongoDB, podemos finalmente exibi -los em uma sequência com uma única consulta de função "Find" como abaixo. A saída desta instrução simples mostra 5 registros da coleção de pessoas com IDs exclusivos.

Teste> dB.Pessoa.encontrar()
[_id: objectId ("63bd33e401632fd3c02ab8e1"), id: 1, nome: 'lia asif',
_id: objectId ("63bd33e401632fd3c02ab8e2"), id: 2, nome: 'Joly woe',
_id: objectId ("63BD33E401632FD3C02AB8E3"), ID: 3, Nome: 'Eden Robe',
_id: objectId ("63BD33E401632FD3C02AB8E4"), ID: 4, Nome: 'William Robert Patinson',
_id: objectId ("63BD33E401632FD3C02AB8E5"), ID: 5, Nome: 'Justin P Treudo']

Como mencionamos antes, estaremos utilizando o campo de nome para entender mais o operador dividido. Portanto, aqui vem a função agregada mais uma vez junto com o operador do projeto. Desta vez, vamos dividir o campo de nome com o espaço único entre as substâncias de seus valores. O título do campo "nome" será substituído pelo "título". Depois de definir esta consulta, estamos executando -a no shell do MongoDB e mostra os valores divididos do campo de nome em uma matriz "título" para todos os registros i.e. Um único nome foi dividido em 2 ou mais substringas.

Teste> dB.Pessoa.agregado ([$ Project: title: $ split: ["$ name", ""]]))
[_id: objectId ("63bd33e401632fd3c02ab8e1"), título: ['lia', 'asif'],
_id: objectId ("63BD33E401632FD3C02AB8E2"), Título: ['Joly', 'Woe'],
_id: objectId ("63BD33E401632FD3C02AB8E3"), Título: ['Eden', 'Robe'],
_id: objectId ("63BD33E401632FD3C02AB8E4"), Título: ['William', 'Robert', 'Patinson'],
_id: objectId ("63BD33E401632FD3C02AB8E5"), Título: ['Justin', 'P', 'Trudo']]

Conclusão

Este guia do MongoDB discute o uso do operador dividido em MongoDB enquanto faz sua comparação com o conceito de subconjuntos em matemática. Para apoiar nossa explicação, discutimos 2-3 ilustrações de MongoDB na forma de trechos de código. Esses exemplos de código ilustram como um operador dividido pode ser utilizado para dividir os valores de um campo específico em substringas no tempo de execução e para mudança permanente na coleção de banco de dados.