Menu Docs

Página inicial do DocsGo

Insira um documento

Nesta página

  • Visão geral
  • O campo _id
  • Insira um documento
  • Exemplo
  • Modificar Comportamento InsertOne
  • Insira vários documentos
  • Exemplo
  • Modificar Comportamento InsertMany
  • Ordered Comportamento
  • Informações adicionais
  • Documentação da API

Neste guia, você pode aprender como inserir documentos em uma coleção MongoDB.

Para localizar, atualizar e excluir documentos no MongoDB, é necessário inserir esses documentos. Você pode inserir um documento usando o método InsertOne() ou inserir vários documentos usando o método InsertMany() ou BulkWrite() .

As seções a seguir concentram-se em InsertOne() e InsertMany().

No MongoDB, cada documento deve conter um campo _id exclusivo.

As duas opções para gerenciar este campo são:

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

  • Você pode permitir que o acionador gere automaticamente valores únicos de ObjectId . O driver gera valores ObjectId exclusivos para documentos que você não especifica explicitamente como _id.

A menos que você ofereça garantias rubustas de exclusividade, o MongoDB recomenda que você deixe o driver gerar automaticamente os valores de _id.

Observação

Os valores duplicados de _id violam restrições de índice único, o que faz com que o driver retorne um WriteError.

Para saber mais sobre o campo _id, consulte a entrada manual do servidor em Índices únicos.

Para saber mais sobre a estrutura e as regras dos documentos, consulte a Entrada do Manual do Servidor sobre Documentos.

Use o método InsertOne() para inserir um único documento em uma coleção.

Após a inserção bem-sucedida, o método retorna uma instância InsertOneResult que contém o _id do novo documento.

O exemplo seguinte cria e insere um documento na coleção favorite_books utilizando o método InsertOne():

coll := client.Database("myDB").Collection("favorite_books")
doc := bson.D{{"title", "Invisible Cities"}, {"author", "Italo Calvino"}, {"year_published", 1974}}
result, err := coll.InsertOne(context.TODO(), doc)
fmt.Printf("Inserted document with _id: %v\n", result.InsertedID)

Você pode modificar o comportamento de InsertOne() construindo e passando uma estrutura InsertOneOptions opcional. As opções disponíveis para sincroniza com o InsertOneOptions são:

Opção
Descrição
BypassDocumentValidation
If true, allows the write to opt-out of document level validation.
Default: false

Crie InsertOneOptions da seguinte forma:

opts := options.InsertOne().SetBypassDocumentValidation(true)

Use o método InsertMany() para inserir vários documentos em uma coleção.

Após a inserção bem-sucedida, o método InsertMany() retorna uma instância InsertManyResult que contém os campos _id dos documentos inseridos.

O exemplo seguinte cria e insere alguns documentos na coleção favorite_books utilizando o método InsertMany() :

coll := client.Database("myDB").Collection("favorite_books")
docs := []interface{}{
bson.D{{"title", "My Brilliant Friend"}, {"author", "Elena Ferrante"}, {"year_published", 2012}},
bson.D{{"title", "Lucy"}, {"author", "Jamaica Kincaid"}, {"year_published", 2002}},
bson.D{{"title", "Cat's Cradle"}, {"author", "Kurt Vonnegut Jr."}, {"year_published", 1998}},
}
result, err := coll.InsertMany(context.TODO(), docs)
list_ids := result.InsertedIDs
fmt.Printf("Documents inserted: %v\n", len(list_ids))
for _, id := range list_ids {
fmt.Printf("Inserted document with _id: %v\n", id)
}

Sua saída deve ser semelhante a esta:

Documents inserted: 3
Inserted document with _id: ObjectID("...")
Inserted document with _id: ObjectID("...")
Inserted document with _id: ObjectID("...")

Você pode modificar o comportamento de InsertMany() construindo e passando uma estrutura InsertOneOptions opcional. As opções disponíveis para sincroniza com o InsertOneOptions são:

Opção
Descrição
BypassDocumentValidation
If true, allows the write to opt-out of document level validation.
Default: false
Ordered
If true, the driver sends documents to the server in the order provided. If an error occurs, the driver and server abort all remaining insert operations. To learn more, see Ordered Behavior.
Default: false

Crie InsertManyOptions da seguinte forma:

opts := options.InsertMany().SetBypassDocumentValidation(true).SetOrdered(false)

Suponha que você queira inserir os seguintes documentos:

{ "_id": 1, "country": "Tanzania" }
{ "_id": 2, "country": "Lithuania" }
{ "_id": 1, "country": "Vietnam" }
{ "_id": 3, "country": "Argentina" }

Se você tentar inserir esses documentos com InsertManyOptions padrão, ocorrerá uma BulkWriteException no terceiro documento devido ao valor de _id repetido, mas os documentos antes do documento de produção de erro ainda serão inseridos em sua coleção.

Observação

Você pode obter um reconhecimento da inserção bem-sucedida do documento, mesmo que ocorra uma BulkWriteException:

docs := []interface{}{
bson.D{{"_id", 1}, {"country", "Tanzania"}},
bson.D{{"_id", 2}, {"country", "Lithuania"}},
bson.D{{"_id", 1}, {"country", "Vietnam"}},
bson.D{{"_id", 3}, {"country", "Argentina"}},
}
result, err := coll.InsertMany(context.TODO(), docs)
list_ids := result.InsertedIDs
if err != nil {
fmt.Printf("A bulk write error occurred, but %v documents were still inserted.\n", len(list_ids))
}
for _, id := range list_ids {
fmt.Printf("Inserted document with _id: %v\n", id)
}

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

{ "_id": 1, "country": "Tanzania" }
{ "_id": 2, "country": "Lithuania" }

Para exemplos executáveis das operações de inserção, consulte os seguintes exemplos de uso:

Para saber mais sobre como executar as operações mencionadas, consulte os seguintes guias:

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

←  Operações de EscritaExcluir um documento →
Dê Feedback
© 2022 MongoDB, Inc.

Sobre

© 2022 MongoDB, Inc.