Menu Docs
Página inicial do Docs
/ / /
Java síncrono
/ / /

Inserir operações

Nesta página

  • Visão geral
  • Uma observação sobre _id
  • Inserir um único documento
  • Insira vários documentos
  • Resumo

Neste guia, você pode aprender como inserir documentos com o driver MongoDB Java.

Você pode usar o MongoDB para recuperar, atualizar e excluir informações. Para uma dessas operações, tais informações, como perfis de usuário e pedidos, precisam existir no MongoDB. Para que elas existam, você precisa primeiro realizar uma operação de inserção.

Uma operação de inserção insere um ou vários documentos no MongoDB usando os métodos insertOne() , insertMany() e bulkWrite() .

As seções a seguir focam em insertOne() e insertMany(). Para obter informações sobre como usar o método bulkWrite() , consulte nosso guia sobre operações em massa.

Ao inserir um documento, o MongoDB impõe uma restrição aos seus documentos por padrão: cada documento deve conter um campo _id exclusivo.

Há duas maneiras de gerenciar este campo:

  • Você mesmo pode gerenciar esse campo, garantindo que cada valor usado seja exclusivo.

  • Você pode permitir que o acionador gere automaticamente valores de ObjectId únicos.

A menos que você tenha fornecido garantias sólidas de exclusividade, recomendamos que deixe o driver gerar automaticamente os valores de _id.

Observação

Os valores _id duplicados violam restrições de índice único, resultando em um WriteError.

Para obter informações adicionais sobre índices únicos, consulte a entrada manual sobre Índices únicos.

Use o método insertOne() quando quiser inserir um único documento.

Em uma inserção bem-sucedida, o método retorna uma instância do InsertOneResult representando o _id do novo documento.

O exemplo a seguir cria e insere um documento usando o método insertOne() :

Document doc1 = new Document("color", "red").append("qty", 5);
InsertOneResult result = collection.insertOne(doc1);
System.out.println("Inserted a document with the following id: "
+ result.getInsertedId().asObjectId().getValue());

Sua saída deve ser semelhante a esta:

Inserted a document with the following id: 60930c39a982931c20ef6cd6

Para obter mais informações sobre os métodos e classes descritas nesta seção, consulte os seguintes recursos:

Use o método insertMany() quando quiser inserir vários documentos. Este método insere documentos na ordem especificada até ocorrer uma exceção, se houver.

Por exemplo, suponha que você queira inserir os seguintes documentos:

{ "_id": 3, "color": "red", "qty": 5 }
{ "_id": 4, "color": "purple", "qty": 10 }
{ "_id": 3, "color": "yellow", "qty": 3 }
{ "_id": 6, "color": "blue", "qty": 8 }

Se você tentar inserir esses documentos, um WriteError ocorrerá no terceiro documento, e os documentos anteriores ao erro serão inseridos na sua collection.

Dica

Use um bloco try-catch para obter uma confirmação de documentos processados com êxito antes que o erro ocorra:

List<Integer> insertedIds = new ArrayList<>();
// Inserts sample documents and prints their "_id" values
try {
InsertManyResult result = collection.insertMany(documents);
result.getInsertedIds().values()
.forEach(doc -> insertedIds.add(doc.asInt32().getValue()));
System.out.println("Inserted documents with the following ids: " + insertedIds);
// Prints a message if any exceptions occur during the operation and the "_id" values of inserted documents
} catch(MongoBulkWriteException exception) {
exception.getWriteResult().getInserts()
.forEach(doc -> insertedIds.add(doc.getId().asInt32().getValue()));
System.out.println("A MongoBulkWriteException occurred, but there are " +
"successfully processed documents with the following ids: " + insertedIds);
}

O resultado consiste em documentos que MongoDB pode processar e deve parecer algo assim:

A MongoBulkWriteException occurred, but there are successfully processed
documents with the following ids: [3, 4, 6]

Se você examinar sua coleção, deverá ver os seguintes documentos:

{ "_id": 3, "color": "red", "qty": 5 }
{ "_id": 4, "color": "purple", "qty": 10 }

Em uma inserção bem-sucedida, o método retorna uma instância do InsertManyResult representando o _id de cada novo documento.

O exemplo seguinte cria e adiciona dois documentos a um List e insere o List utilizando o método insertMany() :

List<Document> documents = new ArrayList<>();
Document doc1 = new Document("color", "red").append("qty", 5);
Document doc2 = new Document("color", "purple").append("qty", 10);
documents.add(doc1);
documents.add(doc2);
InsertManyResult result = collection.insertMany(documents);
// Retrieves and prints the ID values of each inserted document
List<ObjectId> insertedIds = new ArrayList<>();
result.getInsertedIds().values()
.forEach(doc -> insertedIds.add(doc.asObjectId().getValue()));
System.out.println("Inserted documents with the following ids: " + insertedIds);

Sua saída deve ser semelhante a esta:

Inserted documents with the following ids: [60930c3aa982931c20ef6cd7, 60930c3aa982931c20ef6cd8]

Para obter mais informações sobre os métodos e classes descritas nesta seção, consulte os seguintes recursos:

Há três maneiras de realizar uma operação de inserção, mas nos concentramos em duas:

  • O método insertOne() insere um único documento.

  • O método insertMany() insere vários documentos.

Ambos os métodos geram automaticamente um _id se você omitir o campo em seu documento.

Se a inserção for bem-sucedida, ambos os métodos retornarão uma instância representando _id de cada novo documento.

Voltar

Operações de Escrita