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

Insira documentos

Nesta página

  • Visão geral
  • Dados de amostra
  • O campo _id
  • Inserir um documento
  • Insira vários documentos
  • Modificar comportamento de inserção
  • Exemplo
  • Informações adicionais
  • Documentação da API

Neste guia, você pode aprender como usar o driver Java Reactive Streams para adicionar documentos a uma coleção MongoDB realizando operações de inserção.

Uma operação de inserção insere um ou mais documentos em uma coleção MongoDB . Você pode executar uma operação de inserção utilizando os métodos insertOne() ou insertMany() .

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 instâncias do Publisher 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 .

Em uma coleção MongoDB, cada documento deve conter um campo _id com um valor de campo único.

O MongoDB permite gerenciar este campo de duas maneiras:

  • Você mesmo pode definir este campo para cada documento, garantindo que cada valor do campo _id seja único.

  • Você pode permitir que o acionador gere automaticamente valores de ObjectId únicos para cada documento _id. Se você não definir manualmente um valor _id para um documento, o driver preencherá o campo com uma ObjectId.

A menos que você possa garantir exclusividade, recomendamos deixar o driver gerar automaticamente os valores de _id .

Observação

_id Os valores _id duplicados violam as restrições de índice exclusivo, o que faz com que o driver retorne um WriteError de insertOne() ou um BulkWriteError de insertMany().

Para saber mais sobre o campo _id, consulte o guia Índices únicos no manual do MongoDB Server .

Para saber mais sobre a estrutura e as regras de documentos, consulte o guia Documentos no manual do MongoDB Server .

Para adicionar um único documento a uma coleção MongoDB , chame o método insertOne() e passe o documento que você deseja adicionar. Em seguida, passe o resultado insertOne() para o método Mono.from() estático de Mono. Mono é uma classe da biblioteca do Project Reactor. No Java Reactive Streams, os métodos do driver retornam instâncias Publisher frios, o que significa que a operação correspondente não acontece a menos que você assine o Publisher 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 insertOne() para inserir um documento no qual o valor name é "Mongo's Burgers" na coleção restaurants :

Document document = new Document("name", "Mongo's Burgers");
Publisher<InsertOneResult> insertPublisher = restaurants.insertOne(document);
Mono.from(insertPublisher).block();

Para adicionar vários documentos a uma coleção MongoDB , chame o método insertMany() e passe uma lista de documentos que você deseja adicionar. Em seguida, passe o resultado insertMany() para o método Mono.from() estático de Mono. Mono é uma classe da biblioteca do Project Reactor. No Java Reactive Streams, os métodos do driver retornam instâncias Publisher frios, o que significa que a operação correspondente não acontece a menos que você assine o Publisher 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 utiliza o método insertMany() para inserir uma lista de documentos na collection restaurants :

Document doc1 = new Document("name", "Mongo's Pizza");
Document doc2 = new Document("name", "Mongo's Coffee");
List<Document> documents = Arrays.asList(doc1, doc2);
Publisher<InsertManyResult> insertPublisher = restaurants.insertMany(documents);
Mono.from(insertPublisher).block();

A classe InsertOneOptions contém métodos que modificam o comportamento do método insertOne() . Para usar a classe InsertOneOptions , construa uma nova instância da classe e, em seguida, chame um ou mais de seus métodos para modificar a operação de inserção. Você pode encadear essas chamadas de método. Para modificar o comportamento da operação de inserção, passe a instância de classe e as chamadas de método encadeadas como o segundo argumento para o método insertOne() .

Da mesma forma, você pode modificar o método insertMany() usando a classe InsertManyOptions .

Você pode utilizar os seguintes métodos na classe InsertOneOptions para modificar o método insertOne() . Todos os métodos são opcionais.

Método
Descrição
bypassDocumentValidation (Boolean bypassDocumentValidation)
If set to True, allows the write to opt out of document-level validation.
Defaults to False.
toString()
If used, returns a string representation of the object.
comment(BsonValue comment)
A comment to attach to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.

A classe InsertManyOptions contém os métodos anteriores, bem como o seguinte método ordered() :

Método
Descrição
ordered(Boolean ordered)
If set to True, the driver sends documents to the server in the order provided. If an error occurs, the driver and server cancel all remaining insert operations.
Defaults to True.

O código a seguir usa o método insertMany() para inserir novos documentos na coleção restaurants . Ela também define a opção bypassDocumentValidation(true) para ignorar a validação em nível de documento.

Document doc1 = new Document("name", "Mongo's Burgers");
Document doc2 = new Document("name", "Mongo's Pizza");
Document doc3 = new Document("name", "Mongo's Coffee");
List<Document> documents = Arrays.asList(doc1, doc2, doc3);
Publisher<InsertManyResult> insertPublisher =
restaurants.insertMany(documents,
new InsertManyOptions().bypassDocumentValidation(true));
Mono.from(insertPublisher).block();

Para obter exemplos de código executáveis de inserção de documentos com o 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

Gravar dados no MongoDB