Insira documentos
Nesta página
Visão geral
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()
.
Dados de amostra
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 .
O _id
campo
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 umaObjectId
.
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 .
Inserir um documento
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();
Insira vários documentos
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();
Modificar comportamento de inserção
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 . |
Exemplo
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();
Informações adicionais
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 .
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: