Menu Docs
Página inicial do Docs
/ / /
Driver de sincronização Java
/

Substituir documentos

Neste guia, você pode aprender como substituir documentos em uma coleção MongoDB . Uma operação de substituição especifica os campos e valores para substituir um único documento da sua coleção.

Uma operação de substituição substitui um documento da sua collection. A substituição ocorre entre um documento ao qual seu filtro de query corresponde e um documento de substituição.

O método replaceOne() remove todos os campos e valores existentes no documento correspondente (exceto o campo _id ) e o substitui pelo documento de substituição.

Você pode chamar o método replaceOne() em uma instância MongoCollection da seguinte forma:

collection.replaceOne(<query>, <replacement>);

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

  • query especifica um filtro de query com os critérios para corresponder a um documento a ser substituído em sua coleção.

  • replacement especifica campos e valores de um novo objeto Document para substituir o documento correspondente.

  • (Opcional) replaceOptions especifica opções que você pode definir para personalizar como o driver executa a operação de substituição. Para saber mais sobre esse tipo, consulte a documentação da API para ReplaceOptions.

Neste exemplo, uma loja de tintas vende cinco cores diferentes de tinta. A coleção paint_inventory representa seu inventário atual:

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 2, "color": "purple", "qty": 8 }
{ "_id": 3, "color": "yellow", "qty": 0 }
{ "_id": 4, "color": "green", "qty": 6 }
{ "_id": 5, "color": "pink", "qty": 0 }

A loja de tintas entende que deve atualizar seu estoque novamente. O que eles pensaram ser 20 latas de tinta laranja é, na verdade, 25 latas de tinta laranja.

Para atualizar o inventário, chame o método replaceOne() especificando o seguinte:

  • Um filtro de query que corresponda a documentos onde o color é "pink"

  • Um documento de substituição em que o color é "orange" e o qty é "25"

Bson filter = Filters.eq("color", "pink");
Document document = new Document("color", "orange").append("qty", 25);
// Replaces the first document that matches the filter with a new document
UpdateResult result = collection.replaceOne(filter, document);
// Prints the number of matched and modified documents
System.out.println("Matched document count: " + result.getMatchedCount());
System.out.println("Modified document count: " + result.getModifiedCount());

A saída do código anterior se assemelha ao seguinte:

Matched document count: 1
Modified document count: 1

A seguir, mostra o documento atualizado:

{ "_id": 5, "color": "orange", "qty": 25 }

Se vários documentos corresponderem ao filtro de query especificado no método replaceOne(), ele substituirá o primeiro resultado. Você pode especificar uma classificação em uma instância ReplaceOptions para aplicar uma ordem aos documentos correspondentes antes que o servidor execute a operação de substituição, conforme mostrado no código a seguir:

ReplaceOptions options = ReplaceOptions.sort(ascending("qty"));
UpdateResult result = collection.replaceOne(filter, document, options);

Se zero documentos corresponderem ao filtro de query na operação de substituição, replaceOne() não fará alterações nos documentos na coleção. Consulte nosso guia upsert para saber como inserir um novo documento em vez de substituir um se nenhum documento corresponder.

Importante

O método replaceOne() não pode fazer alterações em um documento que viole restrições de índice exclusivas na collection. Para obter mais informações sobre restrições em índices únicos, consulte Índices únicos no manual do MongoDB Server .

Voltar

Upsert

Nesta página