Docs Menu
Docs Home
/ / /
Kotlin コルーチン
/

データベースとコレクション

項目一覧

  • Overview
  • データベースへのアクセス
  • コレクションにアクセスする
  • 戻り値の型を指定する
  • コレクションを作成する
  • ドキュメントの検証
  • コレクションの一覧を取得する
  • コレクションの削除
  • 読み込み設定(read preference)、読み取り保証(read concern)、書込み保証(write concern)の指定

このガイドでは、MongoDB Kotlin ドライバーで MongoDB の データベース と コレクション を使用する方法を学習できます。

MongoDB では、データは次のレベルの階層に整理されています。

  1. データベース: データベースは、MongoDB インスタンスの最上位のデータ組織です。

  2. コレクション: データベースは、ドキュメントを含むコレクションに整理されています。

  3. ドキュメント: ドキュメントには、文字列、数値、日付などのリテラル データと、その他の埋め込みドキュメントが含まれます。 ドキュメント フィールドのタイプと構造の詳細については、 ドキュメント に関するサーバー ドキュメントを参照してください。

MongoDB Kotlinドライバーを使用すると、 Kotlinデータ クラス を使用するか、 Document クラスを使用してMongoDBからデータを保存および取得し、データをモデル化できます。

データ クラスの使用の詳細については、 データクラス データ形式のガイドをご覧ください。 Documentクラスの使用の詳細については、ドキュメント データ形式 のガイドを参照してください。

getDatabase() MongoClientを使用するMongoDatabase MongoDB インスタンスの にアクセスするには、 インスタンスのメソッドを使用します。

次の例えではtestDatabaseという名前のデータベースにアクセスします。

val database = client.getDatabase("testDatabase")

getCollection() メソッド MongoDatabaseを使用するMongoCollection インスタンスのメソッドを使用して、接続された MongoDB インスタンスのデータベース内の にアクセスします。

次の例では、タイプ のドキュメントを含むtestCollection からMongoDatabase ExampleDataClassという名前のコレクションにアクセスします。

ExampleDataClass データモデル
data class ExampleDataClass(
@BsonId 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(
@BsonId 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(
@BsonId 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 ) は、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 MongoDatabaseMongoCollectionメソッドは、優先順位または保証を持つ または の新しいインスタンスを作成します。メソッドが呼び出されるMongoDatabaseまたはMongoCollectionは、元の優先設定と保証設定を保持します。

これらのトピックの詳細については、サーバー マニュアルの次のページを参照してください。

戻る

Stable API