CoroutineMongoCollection¶
interface CoroutineMongoCollection<Document : Any> : MongoCollection<Document>
A collection stores related documents together.
The Coroutine client provides a coroutine-aware API which internally uses the official Kotlin driver.
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 MongoDatabase.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¶
See also¶
asKtMongo: Convert an existing instance from the official Kotlin driver.
Types¶
UpsertResult¶
interface UpsertResult : UpdateOperations.UpsertResult
The return value of upsertOne and upsertOneWithPipeline.
Properties¶
context¶
@LowLevelApi
abstract val context: BsonContext
factory¶
abstract override val factory: BsonFactory
fullyQualifiedName¶
abstract 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(): CoroutineMongoAggregationPipeline<Document>
asOfficial¶
abstract fun asOfficial(): MongoCollection<Document>
Obtains the underlying MongoDB collection from the official Kotlin driver.
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): CoroutineMongoCollection<Document>
find¶
abstract fun find(): MongoIterable<Document>
abstract fun find(options: FindOptions<Document>.() -> Unit, filter: FilterQuery<Document>.() -> Unit): MongoIterable<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): CoroutineMongoCollection<NewType>
inline fun <T : Any> unsafeCast(): CoroutineMongoCollection<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
): CoroutineMongoCollection.UpsertResult
upsertOneWithPipeline¶
@IgnorableReturnValue
abstract suspend override fun upsertOneWithPipeline(
options: UpdateOptions<Document>.() -> Unit,
filter: FilterQuery<Document>.() -> Unit,
update: UpdateWithPipelineQuery<Document>.() -> Unit
): CoroutineMongoCollection.UpsertResult