MongoDB substitua e replaceall

MongoDB substitua e replaceall
As funções Substitua () e Replaceall () serão usadas para substituir um valor no banco de dados MongoDB. Há apenas uma pequena diferença no funcionamento de ambos os operadores. O método substituído é usado para substituir um documento solitário que corresponda a um filtro declarado. O método leva três argumentos: o filtro, o documento de substituição e um objeto de opções opcionais. Enquanto o método replacEall é usado para substituir todos os documentos em uma coleção por um novo conjunto de documentos. Este método é normalmente usado para atualizações em massa e pode ser adequado ao transferir dados de uma coleção para outra. O método leva dois argumentos: os documentos de substituição e um objeto de opções opcionais. Neste guia hoje, discutiremos o uso de ambos os operadores com a ajuda de exemplos.

Criar coleção

A partir do shell do MongoDB, estamos criando uma nova coleção "manequim" em nosso mongodb com a ajuda do comando abaixo: o método createCollection ().

Teste> dB.CreateCollection ("Dummy")
ok: 1

Insira documentos

É hora de adicionar documentos à coleção MongoDB. Para isso, o comando MongoDB abaixo foi executado que está inserindo vários documentos na função “Dummy”: insertMany (). Os documentos contêm informações sobre cidades, países e um campo de contagem (com valores para alguns dos documentos). Cada documento na matriz tem um conjunto de pares de valor-chave. O comando retorna uma resposta que a inserção é reconhecida.

Teste> dB.Fictício.InsertMany ([City: "Texas", Country: "Inglaterra", Conde: 5,
… City: "Los Angeles", Country: "America", Count: 2, City: "Itália", país: "França",
… City: "Istambul", país: "Turquia", Conde: 8, City: "Delhi", país: "Índia", Conde: 7])

reconhecido: verdadeiro,
inserdids:
'0': objectId ("63C7B3588083BBF655D69684"),
'1': objectId ("63C7B3588083BBF655D69685"),
'2': objectId ("63C7B3588083BBF655D69686"),
'3': objectId ("63C7B3588083BBF655D69687"),
'4': objectId ("63C7B3588083BBF655D69688")

Documentos de exibição

Agora, para recuperar e exibir todos os documentos da coleção "fictício", estaremos lançando o método find () na instrução mostrada abaixo. Os documentos retornados são representados em um formato de matriz, com cada registro na matriz como objeto. Os campos em cada documento incluem "_id", "cidade", "country" e "count" i.e. O campo “_id” é um identificador exclusivo atribuído por MongoDB.

Teste> dB.Fictício.encontrar()
[[
_id: objectId ("63C7B3588083BBF655D69684"), cidade: 'Texas', país: 'Inglaterra', contagem: 5,
_id: objectId ("63C7B3588083BBF655D69685"), cidade: 'Los Angeles', país: 'America', contagem: 2,
_id: objectId ("63C7B3588083BBF655D69686"), cidade: 'Itália', país: 'França',
_id: objectId ("63C7B3588083BBF655D69687"), cidade: 'Istambul', país: 'Turquia', contagem: 8,
_id: objectId ("63C7B3588083BBF655D69688"), cidade: 'Delhi', país: 'Índia', contagem: 7
]

Exemplo 01: Substitua o método

O método substituído é usado para substituir um único documento que corresponda a um filtro especificado no mongodb. Portanto, usaremos -o na instrução abaixo para substituir um documento dentro da coleção "Dummy". O primeiro argumento passou para o método de substituição é o filtro. Nesse caso, o filtro é "City": "Delhi", o que significa que o documento com o campo "City" definido como "Delhi" será substituído. O segundo argumento passado para o método substituído é o documento de substituição, que é o novo documento que substituirá o antigo: "country": "Índia-Pacífico". Assim, o documento com o campo "City" definido para "Delhi" agora terá o campo "país" definido como "Índia-Pacífico" em vez de seu valor anterior.

O código é envolvido em um bloco de tentativa, que é usado para lidar com quaisquer erros que possam ocorrer durante a execução do método replicação. Se ocorrer um erro, ele será capturado pelo bloco de captura e impresso no console usando a função print (). A saída mostra que um documento foi correspondido, modificado, e a contagem upserted é zero.

teste> tente
… DB.Fictício.substituir ("city": "Delhi", "country": "Índia-Pacífico");
… Catch (e) print (e);

Reconhecido: Verdadeiro, C7B3588083BBF655D69684 "),
inserdId: nulo,
MatchedCount: 1 e ',
ModifiedCount: 1,
UPSERTEDCOUNT: 0

Depois de exibir todos os documentos da coleção "fictício" no shell usando a função "Localizar", precisamos saber que os 5º O registro foi atualizado com "país:" Índia-Pacífico "".

Teste> dB.Fictício.encontrar()
[[
_id: objectId ("63C7B3588083BBF655D69684"), cidade: 'Texas', país: 'Inglaterra', contagem: 5,
_id: objectId ("63C7B3588083BBF655D69685"), cidade: 'Los Angeles', país: 'America', contagem: 2,
_id: objectId ("63C7B3588083BBF655D69686"), cidade: 'Itália', país: 'França',
_id: objectId ("63C7B3588083BBF655D69687"), cidade: 'Istambul', país: 'Turquia', contagem: 8,
_id: objectId ("63C7B3588083BBF655D69688"), país: 'Índia-Pacífico'
]

Exemplo # 02: Substitua o método pela opção UpSert

Neste exemplo de código, estaremos usando a opção UpSert no método Substitua () que adiciona um novo registro se o especificado não for encontrado. Portanto, o código que estamos usando abaixo inclui uma opção para aprimorar o documento. O primeiro argumento entregue ao método substituído é o filtro "City": "Mali": o documento com o campo "City" definido como "Mali" será substituído. O segundo argumento é o documento de substituição City: "Mali", país: "Maldivas", Conde: 5. O campo "City" definido para "Mali" agora terá o campo "país" definido para "Maldivas" e a "contagem" definida como 5.

O terceiro argumento passou para o método substituído é a opção upSert: true: para inserir um documento totalmente novo se não for encontrado. O código está envolvido em um bloco de tentativa mais uma vez para imprimir () o erro capturado no comando. O resultado da resposta mostra que nenhum documento foi correspondido e modificado, mas um documento foi dividido: um novo documento é inserido desde que o documento especificado no filtro não existia.

teste> tente db.Fictício.Substitua ("City": "Mali",
… City: "Mali", Country: "Maldives", Count: 5, upSert: true);
… Catch (e) print (e);

reconhecido: verdadeiro,
inserdId: objectId ("63C7BFAAF8C41DF4B034B120"),
MatchedCount: 0,
ModifiedCount: 0,
UPSERTEDCOUNT: 1

Para confirmar a inserção de um registro extra, exibimos toda a coleção "manequim" e temos o resultado mostrado abaixo. A opção UpSert inseriu um novo documento no final.

Teste> dB.Fictício.encontrar()
[[
_id: objectId ("63C7B3588083BBF655D69684"), cidade: 'Texas', país: 'Inglaterra', contagem: 5,
_id: objectId ("63C7B3588083BBF655D69685"), cidade: 'Los Angeles', país: 'America', contagem: 2,
_id: objectId ("63C7B3588083BBF655D69686"), cidade: 'Itália', país: 'França',
_id: objectId ("63C7B3588083BBF655D69687"), cidade: 'Istambul', país: 'Turquia', contagem: 8,
_id: objectId ("63C7B3588083BBF655D69688"), cidade: 'Delhi', país: 'Índia', contagem: 7
_id: objectId ("63C7BFAAF8C41DF4B034B120"), Cidade: 'Mali', País: 'Maldivas', Conde: 5
]

Exemplo # 03: Método Replaceall

Aqui está a ilustração de como o operador replacEall () funciona em MongoDB. A entrada para o operador $ replaceall é o campo "país" dos documentos da coleção. O valor de "encontrar" é "eu" e o valor de reposição é "e". Isso significa que todas as ocorrências da letra "eu" no campo "país" serão substituídas pela letra "e". O resultado é um novo campo "país" com a string modificada. Por exemplo, o valor original "Índia-Pacífico" seria substituído por "Indea-PaceFec", o valor "America" ​​agora é "Amereca" e "Maldives" agora é "Maldeves", como demonstrado na saída também.

Teste> dB.Fictício.agregado ([$ Project: country: $ replaceall: input: "$ country", encontre: "i", substituição: "e"])
[[
_id: objectId ("63c7b3588083bbf655d69684"), país: 'Inglaterra',
_id: objectId ("63C7B3588083BBF655D69685"), país: 'Amereca',
_id: objectId ("63c7b3588083bbf655d69686"), país: 'France',
_id: objectId ("63C7B3588083BBF655D69687"), país: 'Turquia',
_id: objectId ("63C7B3588083BBF655D69688"), país: 'Indea-PaceFec',
_id: objectId ("63c7bfaaf8c41df4b034b120"), país: 'Maldeves'
]

Vamos atualizar a ilustração acima mais uma vez. O argumento "Find" foi passado com um valor "A" e o valor de reposição é "*****". Isso significa que todas as ocorrências da letra "a" no campo "Cidade" serão substituídas pela string "******". O resultado é um novo campo de “cidade” com a corda modificada. Por exemplo, o "Texas" original seria substituído por "tex ***** s", e o "Itália" original seria substituído por "it ***** ly" e assim por diante.

Teste> dB.Fictício.agregado ([$ Project: cidade: $ replaceall: input: "$ city", encontre: "a", substituição: "******"])))
[[
_id: objectId ("63c7b3588083bbf655d69684"), cidade: 'tex ****** S',
_id: objectId ("63c7b3588083bbf655d69685"), cidade: 'Los Angeles',
_id: objectId ("63c7b3588083bbf655d69686"), cidade: 'it ****** ly',
_id: objectId ("63c7b3588083bbf655d69687"), cidade: 'ist ****** nbul',
_id: objectId ("63c7b3588083bbf655d69688"), cidade: null,
_id: objectId ("63c7bfaaf8c41df4b034b120"), cidade: 'm ****** li'
]

Conclusão

Definimos as funções Substitua () e ReplacEall () junto com a diferença entre eles. Nós explicamos 3 dos exemplos distintos no artigo I.e. Método Substitua () para atualizar um único campo, a opção UpSert a ser usada no método Substitua para adicionar um novo registro se não for encontrado um campo correspondente e o método replaceall () para substituir uma string em todos os documentos. O método substituir () é muito diferente do método Replaceall quando se trata do efeito que adiciona à coleção de banco de dados.