AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

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

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

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

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

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

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

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

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

Use the getDatabase() method on a MongoClient instance to access a MongoDatabase in a MongoDB instance.

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

val database = client.getDatabase("testDatabase")

Use the getCollection() method of a MongoDatabase instance to access a MongoCollection in a database of your connected MongoDB instance.

次の例では、タイプ のドキュメントを含む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])

Use the createCollection() method of a MongoDatabase instance to create a collection in a database of your connected MongoDB instance.

次の例では、 exampleCollectionというコレクションを作成しています。

database.createCollection("exampleCollection")

You can specify collection options like maximum size and document validation rules using the CreateCollectionOptions class. The createCollection() method accepts an instance of CreateCollectionOptions as an optional second parameter.

ドキュメント検証機能は、コレクションへの書込み中にドキュメントを一連のフィルターに対して検証する能力を提供します。これらのフィルターは、検証ルールと式を指定する一連の フィルター インスタンスを受け入れる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()

警告

コレクションを削除すると、コレクション内のすべてのデータが削除されます

データベースからコレクションを削除すると、そのコレクション内のすべてのドキュメントと、そのコレクションのすべてのインデックスも永続的に削除されます。 不要になったデータを含むコレクションのみを削除します。

MongoDBデプロイからデータベースを削除するには、MongoDatabase.drop() メソッドを次の例に示すように、メソッドを使用します。

val database = mongoClient.getDatabase("testDatabase")
database.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は、元の優先設定と保証設定を保持します。

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