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.