Como usar o método FinDoneAndupdate no MongoDB

Como usar o método FinDoneAndupdate no MongoDB
O MongoDB suporta várias funções usadas para processar dados em bancos de dados. Em qualquer banco de dados, o processo de atualização de dados é inevitável e é realizado com frequência. O método FindOneAndupdate é usado para atualizar um único documento que corresponde à condição, e esse método é uma extensão do método de atualização principal do MongoDBB.

O FinDoneAndupdate () o método retorna o documento após a atualização, enquanto o updateOne () Método de MongoDB também atualiza um documento, mas não retorna nenhum documento.

Neste artigo, você aprenderá a entender e aplicar o FindOnendupdate() Método de MongoDB para combinar e atualizar um único documento.

Como FinDoneAndupdate () funciona em MongoDB

O mecanismo de trabalho deste método é baseado na sintaxe abaixo:

dB.Nome da coleção.FindOneAndupdate (filtro, update, options)

Na sintaxe acima:

Nome da coleção refere -se à coleção de um banco de dados Mongo no qual o documento reside.

filtro é uma condição para corresponder ao documento.

atualizar contém o (s) campo (s) e o (s) valor (s) associado (s) a ser atualizado

opções são os parâmetros para refinar o processamento de atualização. Por exemplo, o “maxtimems”A opção é usada para limitar o tempo para a execução de uma consulta. Se o limite de tempo especificado exceder, a consulta não será executada.

Como aplicar o método findOneAndupdate () em MongoDB

Nesta seção, um guia detalhado é fornecido com a ajuda de vários exemplos para usar o método FinDoneAndupdate ():

Exemplo 1: Atualizando um único documento

Para este exemplo, usaremos um “laptops”A coleção e o conteúdo a seguir residem nele:

> dB.laptops.encontrar().bonito()

Queremos adicionar um "Status" campo com o valor “disponível”Para os documentos em que“Unidades”O valor é maior ou igual a“50““. O comando mencionado abaixo executará a atualização acima mencionada com a ajuda do FinDoneAndupdate () método.

> dB.laptops.FindOneAndupdate ("Units": $ gte: 50, $ set: "status": "disponível")

As observações a seguir são retiradas da saída acima:

O FinDoneAndupdate () Método retornou o documento original (antes da atualização).

Como existem dois documentos que têm “Unidades”Valor maior ou igual a“50", mas o FinDoneAndupdate () o método considera o primeiro que corresponde à condição.

Você pode verificar a atualização usando o comando mencionado abaixo: e percebe -se que apenas um documento é adicionado ao campo “Status““.

> dB.laptops.encontrar().bonito()

Exemplo 2: retornando o documento atualizado

Por padrão, o método findOneAndupdate () retorna o documento original. Você pode obter o documento atualizado em troca definindo o “ReturnNewDocument”Valor da opção para“verdadeiro““.

O comando escrito abaixo adicionará um novo campo “gato”E seu valor está definido como“Jogos““. A atualização é executada no documento em que o “Preço”O valor é igual a 1750. Além disso, o “ReturnNewDocument”O valor é“verdadeiro““. Então, ele deve devolver o documento atualizado.

> dB.laptops.FindOneAndupdate ("Price": 1750, $ set: "Cat": "Gaming", returnNewDocument: true)

A saída mostra que o documento retornado pelo comando acima é uma versão atualizada.

Exemplo 3: Usando o método findOnendupdate () com opções

Várias opções são suportadas por esse método, pois aplicamos o “ReturnNewDocument"Opção em"Exemplo 2““. Nesta seção, várias outras opções suportadas por este método são explicadas.

upsert: O valor do “upsert”A opção é falsa por padrão. E se estiver definido como “verdadeiro", o FinDoneAndupdate () O método criará um novo documento se a condição não combinar com qualquer documento.

Por exemplo, o comando abaixo mencionado procurará os documentos em que o “Fazer”O valor corresponde“Estrangeiro" no laptops coleção. Como nenhum documento tem um valor de campo “Estrangeiro", Portanto, um novo documento será criado porque definimos o “upsert”Valor como“verdadeiro““.

Observação: Nós também usamos o “ReturnNewDocument”Opção para obter o documento atualizado em troca.

> dB.laptops.FindOneandupdate ("Make": "Alien", $ set: "Price": 1500, "Cat": "Gaming", upSert: true, ReturnNewDocument: True)

maxtimems: Esta opção é usada para limitar o tempo (em milissegundos) para o comando de atualização. Se o prazo especificado exceder, a consulta retornará um erro. Por exemplo, definimos o “maxtimemsOpção para valorizar “2”No comando abaixo mencionado:

> dB.laptops.FindOneAndupdate ("Make": "Alien", $ set: "Units": 15, "Price": 1850, ReturnNewDocument: true, maxtimems: 2)

Observação: O valor do “maxtimems”A opção deve ser numérica (não flutuar ou qualquer outro tipo de dados).

Conclusão

O processo de atualização tem uma função fundamental em qualquer sistema de gerenciamento de banco de dados, porque os dados precisam ser atualizados com o tempo em qualquer organização. As extensões de métodos de várias atualizações são usadas por MongoDB como FinDoneAndupdate (). Neste post informativo, fornecemos uma breve aplicação desse método em MongoDBB. O método direcionado corresponde ao primeiro documento com base na condição e depois atualiza o (s) campo (s) específico (s) desse documento.