Skip to content

HasCapped

interface HasCapped : Options

Whether this collection is a capped collection.

For more information, see HasCapped.capped.

Inheritors

Properties

allOptions

@LowLevelApi
abstract val allOptions: List<Option>

The full list of options set on this container.

Specific options are usually searched using the option extension.

context

The context used to generate this expression.

Functions

accept

@LowLevelApi
@DangerousMongoApi
abstract override fun accept(node: BsonNode)

Adds a new node as a child of this one.

acceptAll

Adds any number of nodes into this one.

capped

open fun capped(sizeBytes: Long, max: Long? = null)

Specifies that this collection is capped: it has a maximum size. Once that size is reached, MongoDB removes the oldest documents.

Performance

Capped collection writes are often slower than TTL indexes and regular collections.

It is recommended to avoid updates in capped collections.

Example

class User(
    val _id: ObjectId,
    val name: String,
    val age: Int,
)

class UserEditLog(
    val date: Instant,
    val user: ObjectId,
    val previousName: String,
    val newName: String,
)

val editLog = database.collection<UserEditLog>("user-edit-log")

editLog.create {
    capped(sizeBytes = 1024 * 1024) // 1 MiB
}

editLog.insertOne(
    UserEditLog(
        date = clock.now(),
        user = user._id,
        previousName = previousName,
        newName = user.name,
    )
)

External resources

freeze

@LowLevelApi
abstract override fun freeze()

Makes this node immutable.

option

@LowLevelApi
inline fun <O : Option> Options.option(): O?

Accesses the value of a given Option.

For example, if we have a helper function that sets some default options, and we want to know what maximum limit it set, we can use:

collection.count(
    options = {
        println(option<LimitOption>()) // Will print an integer
    }
)

simplify

@LowLevelApi
abstract fun simplify(): BsonNode?

Returns a simplified (but equivalent) expression to the current expression.

toBson

Writes the result of simplifying to a new BsonDocument.

toString

abstract override fun toString(): String

JSON representation of this option.

writeTo

@LowLevelApi
abstract override fun writeTo(writer: BsonFieldWriter)

Writes the result of simplifying this expression into writer.