Menu Docs
Página inicial do Docs
/ / /
Driver de fluxos reativos do Java
/

Substituir documentos

Nesta página

  • Visão geral
  • Dados de amostra
  • Operação de substituição
  • Parâmetros necessários
  • Exemplo de substituição
  • Modificar comportamento de substituição
  • Exemplo de modificação de substituição
  • Valor de retorno
  • Informações adicionais
  • Documentação da API

Neste guia, você pode aprender como usar o driver Java Reactive Streams para substituir um documento em uma coleção MongoDB executando uma operação de substituição.

Uma operação de substituição substitui um documento em uma coleção MongoDB por novos campos e valores que você especifica. Você pode executar uma operação de substituição usando o método replaceOne() .

Os exemplos neste guia usam a coleção sample_restaurants.restaurants dos conjuntos de dados de amostra do Atlas.

Para aprender como criar um agrupamento MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o tutorial deIntrodução ao .

Importante

Biblioteca do Reator do Projeto

Este guia usa a biblioteca Project Reactor para consumir Publisher instâncias do retornadas pelos métodos de driver Java Reactive Streams. Para saber mais sobre a biblioteca do Project Reactor e como usá-la, consulte Introdução na documentação do Reactor. Para saber mais sobre como usamos os métodos da biblioteca do Project Reactor neste guia, consulte o guia Gravar dados no MongoDB .

Você pode executar uma operação de substituição utilizando o método replaceOne() em uma instância do MongoCollection . Este método remove todos os campos, exceto o campo _id do primeiro documento que corresponde aos critérios de pesquisa, então adiciona os campos e valores especificados ao documento vazio.

O método replaceOne() exige os seguintes parâmetros:

  • Documento de filtro de consulta , que determina quais documentos substituir.

Para obter mais informações sobre filtros de query, consulte o guia Especificar uma query .

  • Substituir documento, que especifica os campos e valores a serem inseridos no novo documento.

Para substituir um único documento em uma coleção MongoDB, chame o replaceOne() método e passe o documento de filtro de query e o documento de substituição como parâmetros. Em seguida, passe o replaceOne() resultado para o Mono.from() método estático de Mono. Mono é uma classe da biblioteca do Project Reactor. No Java Reactive Streams, os métodos do driver retornam Publisher instâncias frios, o que significa que a operação correspondente não acontece a menos que você Publisher assine o retornado. Este guia usa a biblioteca do Project Reactor para consumi-los. Para saber mais sobre Mono, consulte Mono na documentação do Projeto Reactor.

O exemplo a seguir usa o método replaceOne() para substituir os campos e valores de um documento por um valor de campo name de "Pizza Town". O método replaceOne() substitui o documento original por um documento que tenha um valor de campo name de "Mongo's Pizza" e um valor de campo cuisine de "Pizza".

Publisher<UpdateResult> replacePublisher = restaurants.replaceOne(
eq("name", "Pizza Town"),
new Document().append("name", "Mongo's Pizza")
.append("cuisine", "Pizza"));
Mono.from(replacePublisher).block();

Opcionalmente, você pode modificar o comportamento do método replaceOne() chamando um método de opções. A classe ReplaceOptions fornece métodos que modificam o comportamento do método replaceOne() . Para usar a classe ReplaceOptions , construa uma nova instância da classe e, em seguida, chame um ou mais de seus métodos para modificar a operação de substituição. Você pode encadear essas chamadas de método. Para modificar o comportamento da operação de substituição, passe a instância de classe e as chamadas de método encadeadas como o último argumento para o método replaceOne() .

Você pode utilizar os seguintes métodos na classe ReplaceOptions para modificar o método replaceOne() .

Método
Descrição
bypassDocumentValidation(Boolean bypass)
Specifies whether the replace operation bypasses document validation. This lets you update documents that don't meet the schema validation requirements, if any exist. For more information about schema validation, see Schema Validation in the MongoDB Server manual.
collation(Collation collation)
Specifies the kind of language collation to use when sorting results. For more information, see Collation in the MongoDB Server manual.
comment(BsonValue comment)
Attaches a BsonValue comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.
comment(String comment)
Attaches a String comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.
hint(Bson hint)
Sets the index for the operation as a Bson value. For more information, see the hint statement in the MongoDB Server manual.
hintString(String hint)
Sets the index for the operation as a String value. For more information, see the hint statement in the MongoDB Server manual.
let(Bson variables)
Specifies a map of parameter names and values. Values must be constant or closed expressions that don't reference document fields. For more information, see the let statement in the MongoDB Server manual.
upsert(Boolean upsert)
Specifies whether the replace operation performs an upsert operation if no documents match the query filter. For more information, see the upsert statement in the MongoDB Server manual.

O seguinte código utiliza o método replaceOne() para substituir um documento na coleção restaurants . Ele também define a opção upsert(true) para que o driver insira um novo documento se o filtro de query não corresponder a nenhum documento existente.

Publisher<UpdateResult> replacePublisher = restaurants.replaceOne(
eq("name", "Food Town"),
new Document().append("name", "Food World")
.append("cuisine", "Mixed"),
new ReplaceOptions().upsert(true));
Mono.from(replacePublisher).block();

O método replaceOne() retorna um objeto UpdateResult . Utilize os seguintes métodos do tipo UpdateResult para acessar as informações correspondentes:

Propriedade
Descrição
getMatchedCount()
The number of documents that matched the query filter, regardless of how many were replaced.
getModifiedCount()
The number of documents modified by the replace operation. If a replaced document is identical to the original, it is not included in this count.
getUpsertedId()
The ID of the document that was inserted into the database, if the driver performed an upsert. If no document was inserted, this value is null.
wasAcknowledged()
An acknowledgement of the replacement.

Para obter exemplos de código executáveis de substituição de documentos pelo driver Java Reactive Streams, consulte o guia Gravar dados no MongoDB .

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Atualize documentos