Insira documentos
Nesta página
Visão geral
Neste guia, você pode aprender como usar o driver Scala 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 usando os seguintes métodos:
insertOne()
para inserir um único documentoinsertMany()
para inserir um ou mais documentos
Dados de amostra
Os exemplos neste guia utilizam a restaurants
coleção do sample_restaurants
no banco de dados do a partir dos conjuntos de dados de amostra do Atlas . Para acessar essa collection a partir do seu aplicação Scala, crie um MongoClient
que se conecte a um Atlas cluster e atribua os seguintes valores às suas variáveis database
collection
e:
val database: MongoDatabase = mongoClient.getDatabase("sample_restaurants") val collection: MongoCollection[Document] = database.getCollection("restaurants")
Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .
O campo _id
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:
Defina o campo
_id
para cada documento por conta própria, garantindo que cada valor seja único.Permita que o acionador gere automaticamente valores de
BsonObjectId
únicos para cada campo de documento_id
.
A menos que você possa garantir exclusividade, recomendamos deixar 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 erro.
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 inserir.
O exemplo a seguir insere um documento na coleção restaurants
:
val doc: Document = Document("name" -> "Neighborhood Bar & Grill", "borough" -> "Queens") val observable: Observable[InsertOneResult] = collection.insertOne(doc) observable.subscribe(new Observer[InsertOneResult] { override def onNext(result: InsertOneResult): Unit = println(result) override def onError(e: Throwable): Unit = println("Failed: " + e.getMessage) override def onComplete(): Unit = println("Completed") })
AcknowledgedInsertOneResult{insertedId=BsonObjectId{value=...}} Completed
Insira vários documentos
Para adicionar vários documentos a uma collection do MongoDB , chame a função insertMany()
e passe uma lista de documentos que você deseja inserir.
O exemplo a seguir insere dois documentos na collection restaurants
:
val docs: Seq[Document] = Seq( Document("name" -> "Metropolitan Cafe", "borough" -> "Queens"), Document("name" -> "Yankee Bistro", "borough" -> "Bronx") ) val observable: Observable[InsertManyResult] = collection.insertMany(docs) observable.subscribe(new Observer[InsertManyResult] { override def onNext(result: InsertManyResult): Unit = println(result) override def onError(e: Throwable): Unit = println("Failed: " + e.getMessage) override def onComplete(): Unit = println("Completed") })
AcknowledgedInsertManyResult{insertedIds={0=BsonObjectId{value=...}, 1=BsonObjectId{value=...}}} Completed
Modificar comportamento de inserção
O método insertOne()
aceita opcionalmente um parâmetro InsertOneOptions
que define opções para configurar a operação de inserção. Se você não especificar nenhuma opção, o driver executará a operação de inserção com as configurações padrão. Passe as opções como o último parâmetro para o método insertOne()
.
A tabela a seguir descreve os métodos de configuração que você pode usar para configurar uma instância InsertOneOptions
:
Método | Descrição |
---|---|
| If set to true , allows the driver to ignore
document-level validation.Defaults to false . |
| Sets a comment to attach to the operation. For more information, see the insert command
fields guide in the
MongoDB Server manual for more information. |
Você pode definir as configurações anteriores no método insertMany()
configurando uma instância InsertManyOptions
. Você também pode usar o método de preparação ordered()
para especificar a ordem em que o driver insere documentos no MongoDB. Passe as opções como o último parâmetro para o método insertMany()
.
Exemplo
O código a seguir usa o método insertMany()
para inserir três novos documentos em uma coleção. Como a opção bypassDocumentValidation
está ativada, essa operação de inserção ignora a validação em nível de documento:
val docs: Seq[Document] = Seq( Document("name" -> "One Night's Delight", "borough" -> "Queens"), Document("name" -> "Second Street Pub", "borough" -> "Manhattan"), Document("name" -> "Triple Crown Diner", "borough" -> "Brooklyn") ) val opts: InsertManyOptions = InsertManyOptions().bypassDocumentValidation(true) val observable: Observable[InsertManyResult] = collection.insertMany(docs, opts) observable.subscribe(new Observer[InsertManyResult] { override def onNext(result: InsertManyResult): Unit = println(result) override def onError(e: Throwable): Unit = println("Failed: " + e.getMessage) override def onComplete(): Unit = println("Completed") })
AcknowledgedInsertManyResult{insertedIds={0=BsonObjectId{value=...}, 1=BsonObjectId{value=...}, 2=BsonObjectId{value=...}}} Completed
Informações adicionais
Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API: