Gravar dados no MongoDB
Visão geral
Nesta página, você pode ver exemplos de código copiáveis que mostram métodos comuns que você pode usar para escrever dados no MongoDB usando o driver Scala.
Dica
Para saber mais sobre qualquer um dos métodos mostrados nesta página, consulte o link fornecido em cada seção.
Para usar um exemplo desta página, copie o exemplo de código para oaplicativo de amostra ou para seu próprio aplicativo. Certifique-se de substituir todos os espaços reservados nos exemplos de código, como <connection string URI>
, pelos valores relevantes para sua implantação do MongoDB.
Aplicativo de amostra
Você pode usar o seguinte aplicativo de exemplo para testar os exemplos de código nesta página. Para usar o aplicativo de amostra, execute as seguintes etapas:
Verifique se você tem o driver Scala instalado em seu projeto Maven ou sbt.
Copie o seguinte código e cole-o em um novo arquivo
.scala
.Copie um exemplo de código desta página e cole-o nas linhas especificadas no arquivo.
1 import org.mongodb.scala._ 2 import org.mongodb.scala.bson.Document 3 import org.mongodb.scala.model._ 4 import org.mongodb.scala.model.Filters._ 5 import org.mongodb.scala.result._ 6 import org.mongodb.scala.model.Updates._ 7 8 object SampleWriteApp { 9 10 def main(args: Array[String]): Unit = { 11 val mongoClient = MongoClient("<connection string URI>") 12 val database: MongoDatabase = mongoClient.getDatabase("<database name>") 13 val collection: MongoCollection[Document] = database.getCollection("<collection name>") 14 15 // Start example code here 16 17 // End example code here 18 19 // Wait for the operations to complete before closing client 20 // Note: This example uses Thread.sleep() for brevity and does not guarantee all 21 // operations will be completed in time 22 Thread.sleep(1000) 23 mongoClient.close() 24 } 25 }
insertOne
O código a seguir mostra como inserir um único documento em uma coleção:
val doc: Document = Document("<field name>" -> "<value>") 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") })
Para saber mais sobre o método insertOne()
, consulte o guia Inserir documentos .
Inserir vários
O seguinte código mostra como inserir vários documentos em uma coleção:
val docs: Seq[Document] = Seq( Document("<field name>" -> "<value>"), Document("<field name>" -> "<value>") ) 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") })
Para saber mais sobre o método insertMany()
, consulte o guia Inserir documentos .
UpdateOne
O código abaixo mostra como atualizar um único documento em uma collection criando ou editando um campo:
val filter = equal("<field to match>", "<value to match>") val update = set("<field name>", "<value>") val observable: Observable[UpdateResult] = collection.updateOne(filter, update) observable.subscribe(new Observer[UpdateResult] { override def onNext(result: UpdateResult): Unit = println(result) override def onError(e: Throwable): Unit = println("Failed: " + e.getMessage) override def onComplete(): Unit = println("Completed") })
Para saber mais sobre o método updateOne()
, consulte o guia Atualizar documentos .
Atualizar vários
O seguinte código mostra como atualizar vários documentos em uma collection criando ou editando um campo:
val filter = equal("<field to match>", "value to match") val update = set("<field name>", "<value>") val observable: Observable[UpdateResult] = collection.updateMany(filter, update) observable.subscribe(new Observer[UpdateResult] { override def onNext(result: UpdateResult): Unit = println(result) override def onError(e: Throwable): Unit = println("Failed: " + e.getMessage) override def onComplete(): Unit = println("Completed") })
Para saber mais sobre o método updateMany()
, consulte o guia Atualizar documentos .
replaceOne
O código a seguir mostra como substituir um único documento em uma coleção por um novo documento:
val filter = equal("<field to match>", "<value to match>") val replacementDoc: Document = Document("<field name>" -> "<value>") val observable: Observable[UpdateResult] = collection.replaceOne(filter, replacementDoc) observable.subscribe(new Observer[UpdateResult] { override def onNext(result: UpdateResult): Unit = println(result) override def onError(e: Throwable): Unit = println("Failed: " + e.getMessage) override def onComplete(): Unit = println("Completed") })
Para saber mais sobre o método replaceOne()
, consulte o guia Substituir documentos .
Excluir um
O código a seguir mostra como excluir um único documento em uma collection:
val filter = equal("<field to match>", "<value to match>") val observable: Observable[DeleteResult] = collection.deleteOne(filter) observable.subscribe(new Observer[DeleteResult] { override def onNext(result: DeleteResult): Unit = println(result) override def onError(e: Throwable): Unit = println("Failed: " + e.getMessage) override def onComplete(): Unit = println("Completed") })
Para saber mais sobre o método deleteOne()
, consulte o guia Excluir documentos .
Excluir vários
O seguinte código mostra como excluir vários documentos em uma coleção:
val filter = equal("<field to match>", "<value to match>") val observable: Observable[DeleteResult] = collection.deleteMany(filter) observable.subscribe(new Observer[DeleteResult] { override def onNext(result: DeleteResult): Unit = println(result) override def onError(e: Throwable): Unit = println("Failed: " + e.getMessage) override def onComplete(): Unit = println("Completed") })
Para saber mais sobre o método deleteMany()
, consulte o guia Excluir documentos .
Gravação em massa
O seguinte código mostra como executar múltiplas operações de gravação em uma única operação em massa:
val operations = Seq( InsertOneModel(Document("<field name>" -> "<value>")), UpdateManyModel(equal("<field to match>", "<value to match>"), set("<field name>", "<value>")), DeleteOneModel(equal("<field to match>", "<value to match>")) ) val observable: Observable[BulkWriteResult] = collection.bulkWrite(operations) observable.subscribe(new Observer[BulkWriteResult] { override def onNext(result: BulkWriteResult): Unit = println(result) override def onError(e: Throwable): Unit = println("Failed: " + e.getMessage) override def onComplete(): Unit = println("Completed") })
Para saber mais sobre o bulkWrite()
método, consulte o guia de operações de gravação em massa.