Overview
このガイドはクイック スタート ガイドと似ていますが、ドキュメントをモデル化するには、一般的な Documentクラスではなく、ケース クラスを使用します。
このガイドのコード例は、QuickTourCaseClass.scala から取得されています。ドライバーソースコードGithubリポジトリ内のファイル。
重要
MongoCollectionインスタンスで大文字と小文字のサポートを構成するためのマイクロを使用する方法については、 BSON Macrosのドキュメントを参照してください。
まず、コレクション内のドキュメントを表すために使用するケース クラスを作成します。 次のコードは、 Personのケース クラスとコンフィギュレーション オブジェクトを作成します。
import org.mongodb.scala.bson.ObjectId object Person {   def apply(firstName: String, lastName: String): Person =     Person(new ObjectId(), firstName, lastName) } case class Person(_id: ObjectId, firstName: String, lastName: String) 
注意
コンフィギュレーション オブジェクトでは、 apply()メソッドは、値を含まない新しいインスタンスを作成するときに、 _id値を自動的に割り当てることができます。 MongoDB では、 _idフィールドはドキュメントのプライマリキーを表すため、ケース クラスに_idフィールドがあることで、プライマリキーへのアクセスが許可されます。
ケース クラスの構成
コレクションでPersonを使用する場合、それを BSON との間で変換できるCodecが必要です。 org.mongodb.scala.bson.codecs.Macrosコンフィギュレーション オブジェクトは、コンパイル時にケース クラスのコーデックを自動的に生成できるコマンドを提供します。 次の例では、 Personケースクラスのコーデックを含む新しいCodecRegistryを作成します。
import org.mongodb.scala.bson.codecs.Macros._ import org.mongodb.scala.MongoClient.DEFAULT_CODEC_REGISTRY import org.bson.codecs.configuration.CodecRegistries.{fromRegistries, fromProviders} val codecRegistry = fromRegistries(fromProviders(classOf[Person]), DEFAULT_CODEC_REGISTRY ) 
CodecRegistryを構成したら、次の手順ではMongoCollection[Person]を作成します。 次の例では、 mydbデータベースのtestコレクションを使用します。
val mongoClient: MongoClient = MongoClient() val database: MongoDatabase = mongoClient.getDatabase("mydb").withCodecRegistry(codecRegistry) val collection: MongoCollection[Person] = database.getCollection("test") 
注意
CodecRegistryは、データベース レベルまたはコレクション レベルでMongoClientを作成するときに設定できます。 API は柔軟であり、必要に応じてさまざまなCodecRegistryインスタンスを使用できます。
人の挿入
正しく構成されたMongoCollectionを使用すると、 Personインスタンスをコレクションに挿入するのは簡単です。
val person: Person = Person("Ada", "Lovelace") collection.insertOne(person).results() 
複数のユーザー インスタンスの挿入
複数のPersonインスタンスを挿入するには、 insertMany()メソッドを使用します。 次の例では、 printResults()の暗黙的な を使用し、説明が完了するまでブロックし、各結果を出力します。
val people: Seq[Person] = Seq(   Person("Charles", "Babbage"),   Person("George", "Boole"),   Person("Gertrude", "Blanch"),   Person("Grace", "Hopper"),   Person("Ida", "Rhodes"),   Person("Jean", "Bartik"),   Person("John", "Backus"),   Person("Lucy", "Sanders"),   Person("Tim", "Berners Lee"),   Person("Zaphod", "Beeblebrox") ) collection.insertMany(people).printResults() 
このコードは、次のメッセージを出力します。
The operation completed successfully 
コレクションのクエリ
コレクションをクエリするには、 find()メソッドを使用します。
最初に一致する人の検索
コレクションのクエリでは、クイック スタートで使用されるのと同じ API が使用されます。
collection.find().first().printHeadResult() 
この例では、 コレクション内の最初のPersonが出力されます。
Person(58dd0a68218de22333435fa4, Ada, Lovelace) 
すべてのドキュメントを返す
コレクション内のすべてのドキュメントを取得するには、 find()メソッドを使用します。 find()メソッドは、検索操作を連鎖または制御するためのスムーズなインターフェースを提供するFindObservableインスタンスを返します。 次の例では、コレクション内のすべてのドキュメントがPersonインスタンスとして出力され、
collection.find().printResults() 
クエリフィルターを使用して人を検索する
コレクション内のドキュメントのサブセットを返すには、 find()メソッドにフィルターを渡します。 たとえば、次の例えでは、名が"Ida"である最初のPersonを返します。
import org.mongodb.scala.model.Filters._ collection.find(equal("firstName", "Ida")).first().printHeadResult() 
この例では、次の結果が出力されます。
Person(58dd0a68218de22333435fa4, Ida, Rhodes) 
Tip
Filters 、 Sorts 、 Projections 、およびUpdatesヘルパーを使用して、簡単かつ簡潔な方法でクエリを構築できます。
一致するユーザー インスタンスの検索
次のフィルタは、 firstNameが"G"で始まるすべてのPersonインスタンスを、 lastNameでソートして検索します。
collection.find(regex("firstName", "^G")).sort(ascending("lastName")).printResults() 
この例では、 "Gertrude" 、 "George" 、 "Grace"のPersonインスタンスが出力されます。
Update Documents
MongoDB でサポートされている更新演算子は多数あります。 コレクション内のドキュメントを更新するには、 Updatesヘルパーを使用します。
次のアップデートでは、 "Tim Berners-Lee"のハイフンを修正します。
collection.updateOne(equal("lastName", "Berners Lee"), set("lastName", "Berners-Lee"))     .printHeadResult("Update Result: ") 
アップデート メソッドでは、アップデートによって変更されたドキュメント数など、操作に関する情報を提供するUpdateResultが返されます。
Delete Documents
最大で 1 つのドキュメントを削除するか、フィルターに一致するドキュメントがない場合は削除しない場合は、 deleteOne()メソッドを使用します。
collection.deleteOne(equal("firstName", "Zaphod")).printHeadResult("Delete Result: ")