データベースとコレクション
項目一覧
Overview
このガイドでは、MongoDB Kotlin ドライバーで MongoDB の データベース と コレクション を使用する方法を学習できます。
MongoDB では、データは次のレベルの階層に整理されています。
データベース: データベースは、MongoDB インスタンスの最上位のデータ組織です。
コレクション: データベースは、ドキュメントを含むコレクションに整理されています。
ドキュメント: ドキュメントには、文字列、数値、日付などのリテラル データと、その他の埋め込みドキュメントが含まれます。 ドキュメント フィールドのタイプと構造の詳細については、 ドキュメント に関するサーバー ドキュメントを参照してください。
MongoDB Kotlinドライバーを使用すると、 Kotlinデータ クラス を使用するか、 Document クラスを使用してMongoDBからデータを保存および取得し、データをモデル化できます。
データ クラスの使用の詳細については、 データクラス データ形式のガイドをご覧ください。 Document
クラスの使用の詳細については、ドキュメント データ形式 のガイドを参照してください。
データベースへのアクセス
getDatabase() MongoClient
を使用するMongoDatabase
MongoDB インスタンスの にアクセスするには、 インスタンスのメソッドを使用します。
次の例えではtestDatabase
という名前のデータベースにアクセスします。
val database = client.getDatabase("testDatabase")
コレクションにアクセスする
getCollection() メソッド MongoDatabase
を使用するMongoCollection
インスタンスのメソッドを使用して、接続された MongoDB インスタンスのデータベース内の にアクセスします。
次の例では、タイプ のドキュメントを含むtestCollection
からMongoDatabase
ExampleDataClass
という名前のコレクションにアクセスします。
data class ExampleDataClass( val id: ObjectId = ObjectId(), val exampleProperty: String, )
val collection = database.getCollection<ExampleDataClass>("testCollection")
Tip
指定されたコレクション名がデータベースにまだ存在しない場合、MongoDB は最初にそのコレクションにデータを挿入する際に、暗黙的にコレクションを作成します。
戻り値の型を指定する
ドライバーを使用すると、コレクションを検索するときに指定したクラスと異なる場合でも、コレクションから返されるドキュメントのクラスを指定する方法が提供されます。 戻りクラスを指定するには、 MongoCollection.withDocumentClass() メソッド を使用して複数のドキュメントを挿入できます。
以下の状況では、別の戻りクラスを指定すると便利な場合があります。
コレクションには複数のデータ型が含まれています。
データ フィールドを変更するプロジェクションを指定します。
findOneAndUpdate()
やfindOneAndReplace()
など、データを変更するメソッドで戻り値の型を直接指定することはできません。
次の例では、 Fruit
データ クラスによって表されるデータを含むコレクションを検索しますが、 NewFruit
クラスのインスタンスとしてfindOneAndUpdate()
操作の結果を返します。 この操作では、 qty
フィールドの名前がquantity
に変更され、 name
値が"strawberry"
となるアイテムがドキュメント内のseasons
配列フィールドに追加されます。
data class Fruit( val id: Int, val name: String, val qty: Int, val seasons: List<String> )
val collection = database.getCollection<Fruit>("fruits") // Define a data class for returned documents data class NewFruit( val id: Int, val name: String, val quantity: Int, val seasons: List<String> ) val filter = Filters.eq(Fruit::name.name, "strawberry") val update = Updates.combine( Updates.rename(Fruit::qty.name, "quantity"), Updates.push(Fruit::seasons.name, "fall"), ) val options = FindOneAndUpdateOptions() .returnDocument(ReturnDocument.AFTER) // Specify the class for returned documents as the type parameter in withDocumentClass() val result = collection .withDocumentClass<NewFruit>() .findOneAndUpdate(filter, update, options) println(result)
NewFruit(id=1, name=strawberry, quantity=205, seasons=[summer, fall])
コレクションを作成する
createCollection() メソッド を使用するMongoDatabase
インスタンスのメソッドを使用して、接続された MongoDB インスタンスのデータベースにコレクションを作成します。
次の例では、 exampleCollection
というコレクションを作成しています。
database.createCollection("exampleCollection")
CreateCollectionOptions を使用して、最大サイズやドキュメント検証ルールなどのコレクション オプションを指定できます クラス。createCollection()
メソッドは、 CreateCollectionOptions
のインスタンスを任意の 2 つ目のパラメータとして受け入れます。
ドキュメントの検証
ドキュメント検証機能は、コレクションへの書込み中に一連のフィルターに対してドキュメントを検証する機能を提供します。 これらのフィルターは、 ValidationOptions を使用して指定できます。 一連の フィルター を受け入れるクラス 検証ルールと式を指定する インスタンス。
val collOptions: ValidationOptions = ValidationOptions().validator( Filters.or( Filters.exists("title"), Filters.exists("name") ) ) database.createCollection( "movies", CreateCollectionOptions().validationOptions(collOptions) )
コレクションの一覧を取得する
MongoDatabase.listCollectionNames() メソッド を使用して、データベース内のコレクションのリストをクエリできますメソッド:
val collectionList = database.listCollectionNames().toList() println(collectionList)
[movies, exampleCollection]
コレクションの削除
MongoCollection.drop() メソッド を使用して、データベースからコレクションを削除できます。メソッド:
val collection = database.getCollection<ExampleDataClass>("movies") collection.drop()
警告
コレクションを削除すると、コレクション内のすべてのデータが削除されます
データベースからコレクションを削除すると、そのコレクション内のすべてのドキュメントと、そのコレクションのすべてのインデックスも永続的に削除されます。 不要になったデータを含むコレクションのみを削除します。
読み込み設定(read preference)、読み取り保証(read concern)、書込み保証(write concern)の指定
読み込み設定(read preference ) 、 読み取り保証( read concern ) 、 書込み保証( write concern ) は、MongoDB レプリカセットに接続するときに、ドライバーが読み取り操作をルーティングして読み取りおよび書込み操作の確認を待つ方法を制御します。 読み込み設定(read preference)と読み取り保証(read concern)はすべての読み取り操作に適用されます。書込み保証 (write concern) はすべての書込み (write) 操作に適用されます。
MongoDatabase
インスタンスは、書込み保証(write concern)、読み取り保証(read concern)、書込み設定(write preference)の設定を、作成に使用されるMongoClient
から継承します。 MongoCollection
インスタンスは、書込み保証(write concern)、読み取り保証(read concern)、書込み設定(write preference)の設定を、作成に使用されるMongoDatabase
から継承します。 ただし、次のメソッドを使用して、通常継承する設定とは異なる読み込み設定(read preference)、読み取り保証(read concern)、または書込み保証(write concern)を持つMongoDatabase
またはMongoCollection
のインスタンスを取得できます。
Tip
withReadConcern()
withReadPreference()
、 、およびwithWriteConcern
MongoDatabase
MongoCollection
メソッドは、優先順位または保証を持つ または の新しいインスタンスを作成します。メソッドが呼び出されるMongoDatabase
またはMongoCollection
は、元の優先設定と保証設定を保持します。
これらのトピックの詳細については、サーバー マニュアルの次のページを参照してください。