MultiplatformMongoCollection¶
interface MultiplatformMongoCollection<Document : Any> : MongoCollection<Document>
A collection stores related documents together.
The Multiplatform driver provides a coroutine-aware API which works on all supported Kotlin platforms.
Usually, all documents in a collection have the same shape (the same fields). However, heterogeneous structure can be achieved by using:
-
Kotlin collections, like
ListandSet, the embed an arbitrary number of items. -
Polymorphism, for example with
sealed class, to have different fields based on a discriminator.
To avoid name collisions, collections are grouped into databases.
To obtain a collection, see MultiplatformMongoDatabase.collection.
Size limit¶
A MongoDB document cannot exceed 16 MiB.
You can measure the size of a document with opensavvy.ktmongo.bson.BsonDocument.toByteArray followed by ByteArray.size.
The maximum nesting is 100 levels. Each document or array adds a level.
External resources¶
Types¶
UpsertResult¶
interface UpsertResult : UpdateOperations.UpsertResult
The return value of upsertOne and upsertOneWithPipeline.
Properties¶
context¶
@LowLevelApi
abstract val context: BsonContext
database¶
abstract val database: MultiplatformMongoDatabase
The MultiplatformMongoDatabase that contains this collection.
factory¶
abstract override val factory: BsonFactory
fullyQualifiedName¶
open override val fullyQualifiedName: String
name¶
objectIdGenerator¶
abstract val objectIdGenerator: ObjectIdGenerator
propertyNameStrategy¶
abstract val propertyNameStrategy: PropertyNameStrategy
type¶
@LowLevelApi
abstract val type: KType
Functions¶
aggregate¶
abstract override fun aggregate(): MultiplatformMongoAggregationPipeline<Document>
bulkWrite¶
abstract suspend fun bulkWrite(
options: BulkWriteOptions<Document>.() -> Unit,
filter: FilterQuery<Document>.() -> Unit,
operations: BulkWrite<Document>.() -> Unit
)
count¶
abstract suspend fun count(options: CountOptions<Document>.() -> Unit, predicate: FilterQuery<Document>.() -> Unit): Long
countEstimated¶
abstract suspend fun countEstimated(): Long
create¶
abstract suspend fun create(options: CreateCollectionOptions<Document>.() -> Unit)
deleteMany¶
abstract suspend fun deleteMany(options: DeleteManyOptions<Document>.() -> Unit, filter: FilterQuery<Document>.() -> Unit)
deleteOne¶
abstract suspend fun deleteOne(options: DeleteOneOptions<Document>.() -> Unit, filter: FilterQuery<Document>.() -> Unit)
drop¶
abstract suspend fun drop(options: DropOptions<Document>.() -> Unit)
exists¶
open suspend fun exists(options: CountOptions<Document>.() -> Unit, predicate: FilterQuery<Document>.() -> Unit): Boolean
filter¶
abstract override fun filter(filter: FilterQuery<Document>.() -> Unit): MultiplatformMongoCollection<Document>
find¶
abstract override fun find(): MultiplatformMongoIterable<Document>
abstract override fun find(options: FindOptions<Document>.() -> Unit, filter: FilterQuery<Document>.() -> Unit): MultiplatformMongoIterable<Document>
findOne¶
open suspend fun findOne(options: FindOptions<Document>.() -> Unit, filter: FilterQuery<Document>.() -> Unit): Document?
findOneAndUpdate¶
abstract suspend fun findOneAndUpdate(
options: UpdateOptions<Document>.() -> Unit,
filter: FilterQuery<Document>.() -> Unit,
update: UpdateQuery<Document>.() -> Unit
): Document?
insertMany¶
abstract suspend fun insertMany(documents: Iterable<Document>, options: InsertManyOptions<Document>.() -> Unit)
open suspend fun insertMany(vararg documents: Document, options: InsertManyOptions<Document>.() -> Unit)
insertOne¶
abstract suspend fun insertOne(document: Document, options: InsertOneOptions<Document>.() -> Unit)
newId¶
replaceOne¶
abstract suspend fun replaceOne(
options: ReplaceOptions<Document>.() -> Unit,
filter: FilterQuery<Document>.() -> Unit,
document: Document
)
repsertOne¶
abstract suspend fun repsertOne(
options: ReplaceOptions<Document>.() -> Unit,
filter: FilterQuery<Document>.() -> Unit,
document: Document
)
unsafeCast¶
abstract override fun <NewType : Any> unsafeCast(type: KType): MultiplatformMongoCollection<NewType>
inline fun <T : Any> unsafeCast(): MultiplatformMongoCollection<T>
Overwrites the represented type of this value.
This method can be useful to bypass type checks.
Example
If we know there are some documents that have the wrong format, we can use unsafeCast to find them without needing to add their fields to the production DTO.
updateMany¶
@IgnorableReturnValue
abstract suspend fun updateMany(
options: UpdateOptions<Document>.() -> Unit,
filter: FilterQuery<Document>.() -> Unit,
update: UpdateQuery<Document>.() -> Unit
): UpdateOperations.UpdateResult
updateManyWithPipeline¶
@IgnorableReturnValue
abstract suspend fun updateManyWithPipeline(
options: UpdateOptions<Document>.() -> Unit,
filter: FilterQuery<Document>.() -> Unit,
update: UpdateWithPipelineQuery<Document>.() -> Unit
): UpdateOperations.UpdateResult
updateOne¶
@IgnorableReturnValue
abstract suspend fun updateOne(
options: UpdateOptions<Document>.() -> Unit,
filter: FilterQuery<Document>.() -> Unit,
update: UpdateQuery<Document>.() -> Unit
): UpdateOperations.UpdateResult
updateOneWithPipeline¶
@IgnorableReturnValue
abstract suspend fun updateOneWithPipeline(
options: UpdateOptions<Document>.() -> Unit,
filter: FilterQuery<Document>.() -> Unit,
update: UpdateWithPipelineQuery<Document>.() -> Unit
): UpdateOperations.UpdateResult
upsertOne¶
@IgnorableReturnValue
abstract suspend override fun upsertOne(
options: UpdateOptions<Document>.() -> Unit,
filter: FilterQuery<Document>.() -> Unit,
update: UpsertQuery<Document>.() -> Unit
): MultiplatformMongoCollection.UpsertResult
upsertOneWithPipeline¶
@IgnorableReturnValue
abstract suspend override fun upsertOneWithPipeline(
options: UpdateOptions<Document>.() -> Unit,
filter: FilterQuery<Document>.() -> Unit,
update: UpdateWithPipelineQuery<Document>.() -> Unit
): MultiplatformMongoCollection.UpsertResult