Skip to content

Option

interface Option : BsonNode

Additional parameters that are passed to MongoDB operations.

Options are usually configured with the options = {} optional parameter in a command. For example, if we want to know how many notifications a user has, but can only display "99" because of UI size constraints, we can use the following command:

notifications.count(
    options = {
        limit(99)
    }
) {
    Notification::ownedBy eq currentUser
}

If the same option is specified multiple times, only the very last one applies:

notifications.count {
    options {
        limit(99)
        limit(10)
    }
}

will only count at most 10 elements.

Accessing the current value of an option

See Options.allOptions and option.

Implementing this interface

Implementations of this interface must be careful to respect the contract of BsonNode, in particular about the toString representation.

Option implementations must be immutable. If the user wants to change an option, they can specify it a second time (which will override the previous one).

Inheritors

Properties

context

@LowLevelApi



abstract val context: BsonContext

The context used to generate this expression.

name

abstract val name: String

The name of this option, as it appears in the BSON representation.

Options always have the form:

find(
    {
        "limit": 10,
        "sort": { }
    },
    { }
)

In this example, the LimitOption has the name "limit" and the SortOption has the name "sort".

Implementation notes

This value should be immutable.

Functions

freeze

@LowLevelApi



abstract override fun freeze()

Makes this expression immutable.

read

abstract fun read(): BsonValueReader

Reads the value of this option.

Performance

Note that this method requires to write this option into a temporary BSON value.

simplify

@LowLevelApi



abstract fun simplify(): BsonNode?

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

toBson

@LowLevelApi



open fun toBson(): Bson

Writes the result of simplifying to a new BSON document.

toString

abstract override fun toString(): String

JSON representation of this expression.

writeTo

@LowLevelApi



abstract override fun writeTo(writer: BsonFieldWriter)

Writes the result of simplifying this expression into writer.