MongoDB へのデータの書込み (write)
Overview
このページでは、 Scalaドライバーを使用してMongoDBにデータを書込む一般的な方法を示すコピー可能なコード例を紹介します。
Tip
このページに記載されているメソッドの詳細については、各セクションに提供されているリンクを参照してください。
このページの例を使用するには、コード例をサンプル アプリケーションまたは独自のアプリケーションにコピーします。 <connection string URI>
など、コード例にあるすべてのプレースホルダーを、MongoDB 配置に関連する値に置き換えてください。
サンプル アプリケーション
次のサンプルアプリケーションを使用して、このページのコード例をテストできます。 サンプル アプリケーションを使用するには、次の手順を実行します。
Maven または s以降のプロジェクトにScalaドライバーがインストールされていることを確認してください。
次のコードをコピーし、新しい
.scala
ファイルに貼り付けます。このページからコード例をコピーし、 ファイル内の指定された行に貼り付けます。
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 }
1 つを挿入
次のコードは、コレクションに単一のドキュメントを挿入する方法を示しています。
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") })
insertOne()
メソッドの詳細については、 のドキュメントの挿入ガイドを参照してください。
複数挿入
次のコードは、コレクションに複数のドキュメントを挿入する方法を示しています。
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") })
insertMany()
メソッドについて詳しくは、ドキュメントの挿入ガイドをご覧ください。
更新 1
次のコードは、フィールドを作成または編集して、コレクション内の 1 つのドキュメントを更新する方法を示しています。
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") })
updateOne()
メソッドについて詳しくは、ドキュメントの更新ガイドを参照してください。
複数更新
次のコードは、フィールドを作成または編集して、コレクション内の複数のドキュメントを更新する方法を示しています。
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") })
updateMany()
メソッドについて詳しくは、ドキュメントの更新ガイドを参照してください。
replaceOne
次のコードは、コレクション内の単一のドキュメントを新しいドキュメントに置き換える方法を示しています。
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") })
replaceOne()
メソッドの詳細については、ドキュメントの置換のガイドを参照してください。
deleteOne
次のコードは、コレクション内の 1 つのドキュメントを削除する方法を示しています。
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") })
deleteOne()
メソッドの詳細については、ドキュメントの削除のガイドを参照してください。
複数削除
次のコードは、コレクション内の複数のドキュメントを削除する方法を示しています。
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") })
deleteMany()
メソッドの詳細については、ドキュメントの削除のガイドを参照してください。
一括書き込み (write)
次のコードは、1 つの一括操作で複数の書き込み操作を実行する方法を示しています。
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") })