ConditionalValueOperators

Operators to conditionally create a value.

To learn more about aggregation operators, view AggregationOperators.

Inheritors

Types

Link copied to clipboard
data class Case<Root : Any, T>(val condition: Value<Root, Boolean>, val value: Value<Root, T>)

A single case in a switch operator.

Properties

Link copied to clipboard
abstract override val context: BsonContext

The strategy used when converting from KProperty1 to Field.

Link copied to clipboard

Converts a Kotlin property into a Field.

Functions

Link copied to clipboard
inline fun <R : Any, T> cond(condition: Boolean, ifTrue: T, ifFalse: T): Value<R, T>
@JvmName(name = "condByResultByResultByProperty")
inline fun <R : Any, T> cond(condition: Boolean, ifTrue: T, ifFalse: KProperty1<R, T>): Value<R, T>
inline fun <R : Any, T> cond(condition: Boolean, ifTrue: T, ifFalse: Value<R, T>): Value<R, T>
@JvmName(name = "condByResultByResultByField")
inline fun <R : Any, T> cond(condition: Boolean, ifTrue: T, ifFalse: Field<R, T>): Value<R, T>
@JvmName(name = "condByResultByPropertyByResult")
inline fun <R : Any, T> cond(condition: Boolean, ifTrue: KProperty1<R, T>, ifFalse: T): Value<R, T>
@JvmName(name = "condByResultByPropertyByProperty")
inline fun <R : Any, T> cond(condition: Boolean, ifTrue: KProperty1<R, T>, ifFalse: KProperty1<R, T>): Value<R, T>
@JvmName(name = "condByResultByPropertyByValue")
inline fun <R : Any, T> cond(condition: Boolean, ifTrue: KProperty1<R, T>, ifFalse: Value<R, T>): Value<R, T>
@JvmName(name = "condByResultByPropertyByField")
inline fun <R : Any, T> cond(condition: Boolean, ifTrue: KProperty1<R, T>, ifFalse: Field<R, T>): Value<R, T>
inline fun <R : Any, T> cond(condition: Boolean, ifTrue: Value<R, T>, ifFalse: T): Value<R, T>
@JvmName(name = "condByResultByValueByProperty")
inline fun <R : Any, T> cond(condition: Boolean, ifTrue: Value<R, T>, ifFalse: KProperty1<R, T>): Value<R, T>
inline fun <R : Any, T> cond(condition: Boolean, ifTrue: Value<R, T>, ifFalse: Value<R, T>): Value<R, T>
@JvmName(name = "condByResultByValueByField")
inline fun <R : Any, T> cond(condition: Boolean, ifTrue: Value<R, T>, ifFalse: Field<R, T>): Value<R, T>
@JvmName(name = "condByResultByFieldByResult")
inline fun <R : Any, T> cond(condition: Boolean, ifTrue: Field<R, T>, ifFalse: T): Value<R, T>
@JvmName(name = "condByResultByFieldByProperty")
inline fun <R : Any, T> cond(condition: Boolean, ifTrue: Field<R, T>, ifFalse: KProperty1<R, T>): Value<R, T>
@JvmName(name = "condByResultByFieldByValue")
inline fun <R : Any, T> cond(condition: Boolean, ifTrue: Field<R, T>, ifFalse: Value<R, T>): Value<R, T>
@JvmName(name = "condByResultByFieldByField")
inline fun <R : Any, T> cond(condition: Boolean, ifTrue: Field<R, T>, ifFalse: Field<R, T>): Value<R, T>
@JvmName(name = "condByPropertyByResultByResult")
inline fun <R : Any, T> cond(condition: KProperty1<R, Boolean>, ifTrue: T, ifFalse: T): Value<R, T>
@JvmName(name = "condByPropertyByResultByProperty")
inline fun <R : Any, T> cond(condition: KProperty1<R, Boolean>, ifTrue: T, ifFalse: KProperty1<R, T>): Value<R, T>
@JvmName(name = "condByPropertyByResultByValue")
inline fun <R : Any, T> cond(condition: KProperty1<R, Boolean>, ifTrue: T, ifFalse: Value<R, T>): Value<R, T>
@JvmName(name = "condByPropertyByResultByField")
inline fun <R : Any, T> cond(condition: KProperty1<R, Boolean>, ifTrue: T, ifFalse: Field<R, T>): Value<R, T>
@JvmName(name = "condByPropertyByPropertyByResult")
inline fun <R : Any, T> cond(condition: KProperty1<R, Boolean>, ifTrue: KProperty1<R, T>, ifFalse: T): Value<R, T>
@JvmName(name = "condByPropertyByPropertyByProperty")
open fun <R : Any, T> cond(condition: KProperty1<R, Boolean>, ifTrue: KProperty1<R, T>, ifFalse: KProperty1<R, T>): Value<R, T>
@JvmName(name = "condByPropertyByPropertyByValue")
open fun <R : Any, T> cond(condition: KProperty1<R, Boolean>, ifTrue: KProperty1<R, T>, ifFalse: Value<R, T>): Value<R, T>
@JvmName(name = "condByPropertyByPropertyByField")
open fun <R : Any, T> cond(condition: KProperty1<R, Boolean>, ifTrue: KProperty1<R, T>, ifFalse: Field<R, T>): Value<R, T>
@JvmName(name = "condByPropertyByValueByResult")
inline fun <R : Any, T> cond(condition: KProperty1<R, Boolean>, ifTrue: Value<R, T>, ifFalse: T): Value<R, T>
@JvmName(name = "condByPropertyByValueByProperty")
open fun <R : Any, T> cond(condition: KProperty1<R, Boolean>, ifTrue: Value<R, T>, ifFalse: KProperty1<R, T>): Value<R, T>
@JvmName(name = "condByPropertyByValueByValue")
open fun <R : Any, T> cond(condition: KProperty1<R, Boolean>, ifTrue: Value<R, T>, ifFalse: Value<R, T>): Value<R, T>
@JvmName(name = "condByPropertyByValueByField")
open fun <R : Any, T> cond(condition: KProperty1<R, Boolean>, ifTrue: Value<R, T>, ifFalse: Field<R, T>): Value<R, T>
@JvmName(name = "condByPropertyByFieldByResult")
inline fun <R : Any, T> cond(condition: KProperty1<R, Boolean>, ifTrue: Field<R, T>, ifFalse: T): Value<R, T>
@JvmName(name = "condByPropertyByFieldByProperty")
open fun <R : Any, T> cond(condition: KProperty1<R, Boolean>, ifTrue: Field<R, T>, ifFalse: KProperty1<R, T>): Value<R, T>
@JvmName(name = "condByPropertyByFieldByValue")
open fun <R : Any, T> cond(condition: KProperty1<R, Boolean>, ifTrue: Field<R, T>, ifFalse: Value<R, T>): Value<R, T>
@JvmName(name = "condByPropertyByFieldByField")
open fun <R : Any, T> cond(condition: KProperty1<R, Boolean>, ifTrue: Field<R, T>, ifFalse: Field<R, T>): Value<R, T>
inline fun <R : Any, T> cond(condition: Value<R, Boolean>, ifTrue: T, ifFalse: T): Value<R, T>
@JvmName(name = "condByValueByResultByProperty")
inline fun <R : Any, T> cond(condition: Value<R, Boolean>, ifTrue: T, ifFalse: KProperty1<R, T>): Value<R, T>
inline fun <R : Any, T> cond(condition: Value<R, Boolean>, ifTrue: T, ifFalse: Value<R, T>): Value<R, T>
@JvmName(name = "condByValueByResultByField")
inline fun <R : Any, T> cond(condition: Value<R, Boolean>, ifTrue: T, ifFalse: Field<R, T>): Value<R, T>
@JvmName(name = "condByValueByPropertyByResult")
inline fun <R : Any, T> cond(condition: Value<R, Boolean>, ifTrue: KProperty1<R, T>, ifFalse: T): Value<R, T>
@JvmName(name = "condByValueByPropertyByProperty")
open fun <R : Any, T> cond(condition: Value<R, Boolean>, ifTrue: KProperty1<R, T>, ifFalse: KProperty1<R, T>): Value<R, T>
@JvmName(name = "condByValueByPropertyByValue")
open fun <R : Any, T> cond(condition: Value<R, Boolean>, ifTrue: KProperty1<R, T>, ifFalse: Value<R, T>): Value<R, T>
@JvmName(name = "condByValueByPropertyByField")
open fun <R : Any, T> cond(condition: Value<R, Boolean>, ifTrue: KProperty1<R, T>, ifFalse: Field<R, T>): Value<R, T>
inline fun <R : Any, T> cond(condition: Value<R, Boolean>, ifTrue: Value<R, T>, ifFalse: T): Value<R, T>
@JvmName(name = "condByValueByValueByProperty")
open fun <R : Any, T> cond(condition: Value<R, Boolean>, ifTrue: Value<R, T>, ifFalse: KProperty1<R, T>): Value<R, T>
open fun <R : Any, T> cond(condition: Value<R, Boolean>, ifTrue: Value<R, T>, ifFalse: Value<R, T>): Value<R, T>
@JvmName(name = "condByValueByValueByField")
open fun <R : Any, T> cond(condition: Value<R, Boolean>, ifTrue: Value<R, T>, ifFalse: Field<R, T>): Value<R, T>
@JvmName(name = "condByValueByFieldByResult")
inline fun <R : Any, T> cond(condition: Value<R, Boolean>, ifTrue: Field<R, T>, ifFalse: T): Value<R, T>
@JvmName(name = "condByValueByFieldByProperty")
open fun <R : Any, T> cond(condition: Value<R, Boolean>, ifTrue: Field<R, T>, ifFalse: KProperty1<R, T>): Value<R, T>
@JvmName(name = "condByValueByFieldByValue")
open fun <R : Any, T> cond(condition: Value<R, Boolean>, ifTrue: Field<R, T>, ifFalse: Value<R, T>): Value<R, T>
@JvmName(name = "condByValueByFieldByField")
open fun <R : Any, T> cond(condition: Value<R, Boolean>, ifTrue: Field<R, T>, ifFalse: Field<R, T>): Value<R, T>
@JvmName(name = "condByFieldByResultByResult")
inline fun <R : Any, T> cond(condition: Field<R, Boolean>, ifTrue: T, ifFalse: T): Value<R, T>
@JvmName(name = "condByFieldByResultByProperty")
inline fun <R : Any, T> cond(condition: Field<R, Boolean>, ifTrue: T, ifFalse: KProperty1<R, T>): Value<R, T>
@JvmName(name = "condByFieldByResultByValue")
inline fun <R : Any, T> cond(condition: Field<R, Boolean>, ifTrue: T, ifFalse: Value<R, T>): Value<R, T>
@JvmName(name = "condByFieldByResultByField")
inline fun <R : Any, T> cond(condition: Field<R, Boolean>, ifTrue: T, ifFalse: Field<R, T>): Value<R, T>
@JvmName(name = "condByFieldByPropertyByResult")
inline fun <R : Any, T> cond(condition: Field<R, Boolean>, ifTrue: KProperty1<R, T>, ifFalse: T): Value<R, T>
@JvmName(name = "condByFieldByPropertyByProperty")
open fun <R : Any, T> cond(condition: Field<R, Boolean>, ifTrue: KProperty1<R, T>, ifFalse: KProperty1<R, T>): Value<R, T>
@JvmName(name = "condByFieldByPropertyByValue")
open fun <R : Any, T> cond(condition: Field<R, Boolean>, ifTrue: KProperty1<R, T>, ifFalse: Value<R, T>): Value<R, T>
@JvmName(name = "condByFieldByPropertyByField")
open fun <R : Any, T> cond(condition: Field<R, Boolean>, ifTrue: KProperty1<R, T>, ifFalse: Field<R, T>): Value<R, T>
@JvmName(name = "condByFieldByValueByResult")
inline fun <R : Any, T> cond(condition: Field<R, Boolean>, ifTrue: Value<R, T>, ifFalse: T): Value<R, T>
@JvmName(name = "condByFieldByValueByProperty")
open fun <R : Any, T> cond(condition: Field<R, Boolean>, ifTrue: Value<R, T>, ifFalse: KProperty1<R, T>): Value<R, T>
@JvmName(name = "condByFieldByValueByValue")
open fun <R : Any, T> cond(condition: Field<R, Boolean>, ifTrue: Value<R, T>, ifFalse: Value<R, T>): Value<R, T>
@JvmName(name = "condByFieldByValueByField")
open fun <R : Any, T> cond(condition: Field<R, Boolean>, ifTrue: Value<R, T>, ifFalse: Field<R, T>): Value<R, T>
@JvmName(name = "condByFieldByFieldByResult")
inline fun <R : Any, T> cond(condition: Field<R, Boolean>, ifTrue: Field<R, T>, ifFalse: T): Value<R, T>
@JvmName(name = "condByFieldByFieldByProperty")
open fun <R : Any, T> cond(condition: Field<R, Boolean>, ifTrue: Field<R, T>, ifFalse: KProperty1<R, T>): Value<R, T>
@JvmName(name = "condByFieldByFieldByValue")
open fun <R : Any, T> cond(condition: Field<R, Boolean>, ifTrue: Field<R, T>, ifFalse: Value<R, T>): Value<R, T>
@JvmName(name = "condByFieldByFieldByField")
open fun <R : Any, T> cond(condition: Field<R, Boolean>, ifTrue: Field<R, T>, ifFalse: Field<R, T>): Value<R, T>

Decides between two values depending on the evaluation of a boolean value.

Link copied to clipboard
@JvmName(name = "divResultReceiver")
inline operator fun <Context : Any, Root, Child> Root.div(field: KProperty1<Root, Child>): Value<Context, Child>
@JvmName(name = "divResultReceiver")
inline operator fun <Context : Any, Root, Child> Root.div(field: Field<Root, Child>): Value<Context, Child>
open operator fun <Context : Any, Root, Child> Value<Context, Root>.div(field: KProperty1<Root, Child>): Value<Context, Child>
open operator fun <Context : Any, Root, Child> Value<Context, Root>.div(field: Field<Root, Child>): Value<Context, Child>
@JvmName(name = "divFieldReceiver")
open operator fun <Context : Any, Root, Child> Field<Context, Root>.div(field: KProperty1<Root, Child>): Value<Context, Child>
@JvmName(name = "divFieldReceiver")
open operator fun <Context : Any, Root, Child> Field<Context, Root>.div(field: Field<Root, Child>): Value<Context, Child>

Refers to field as a nested field of the current value.

open operator fun <Root, Parent, Child> KProperty1<Root, Parent>.div(child: KProperty1<Parent & Any, Child>): Field<Root, Child>
open operator fun <Root, Type, Child> Field<Root, Type>.div(child: KProperty1<in Type & Any, Child>): Field<Root, Child>
open operator fun <Root, Type, Child> Field<Root, Type>.div(child: Field<Type, Child>): Field<Root, Child>

Refers to child as a nested field of the current field.

Link copied to clipboard
open operator fun <Root, Type> KProperty1<Root, Collection<Type>>.get(index: Int): Field<Root, Type>
open operator fun <Root, Type> Field<Root, Collection<Type>>.get(index: Int): Field<Root, Type>

Refers to a specific item in an array, by its index.

open operator fun <Root, Type> KProperty1<Root, Map<String, Type>>.get(index: String): Field<Root, Type>
open operator fun <Root, Type> Field<Root, Map<String, Type>>.get(key: String): Field<Root, Type>

Refers to a specific item in a map, by its name.

Link copied to clipboard
inline fun <Result> of(value: Result): Value<Any, Result>
open fun <Result> of(value: Result, type: KType): Value<Any, Result>

Refers to a Kotlin value within an aggregation value.

open fun <Context : Any, Result> of(field: Field<Context, Result>): Value<Context, Result>

Refers to a field within an aggregation value.

open fun of(value: BsonType): Value<Any, BsonType>

Refers to a BsonType within an aggregation value.

Link copied to clipboard
inline fun <R : Any, T> switch(vararg cases: ConditionalValueOperators.Case<R, T>, default: T): Value<R, T>
@JvmName(name = "switchByProperty")
open fun <R : Any, T> switch(vararg cases: ConditionalValueOperators.Case<R, T>, default: KProperty1<R, T>): Value<R, T>
open fun <R : Any, T> switch(vararg cases: ConditionalValueOperators.Case<R, T>, default: Value<R, T>? = null): Value<R, T>
@JvmName(name = "switchByField")
open fun <R : Any, T> switch(vararg cases: ConditionalValueOperators.Case<R, T>, default: Field<R, T>): Value<R, T>

Selects one value based on multiple conditions.

Link copied to clipboard
@JvmName(name = "thenResultReceiverByResult")
infix inline fun <R : Any, T> Boolean.then(value: T): ConditionalValueOperators.Case<R, T>
@JvmName(name = "thenResultReceiverByProperty")
infix inline fun <R : Any, T> Boolean.then(value: KProperty1<R, T>): ConditionalValueOperators.Case<R, T>
@JvmName(name = "thenResultReceiverByValue")
infix inline fun <R : Any, T> Boolean.then(value: Value<R, T>): ConditionalValueOperators.Case<R, T>
@JvmName(name = "thenResultReceiverByField")
infix inline fun <R : Any, T> Boolean.then(value: Field<R, T>): ConditionalValueOperators.Case<R, T>
@JvmName(name = "thenPropertyReceiverByResult")
infix inline fun <R : Any, T> KProperty1<R, Boolean>.then(value: T): ConditionalValueOperators.Case<R, T>
@JvmName(name = "thenPropertyReceiverByProperty")
open infix fun <R : Any, T> KProperty1<R, Boolean>.then(value: KProperty1<R, T>): ConditionalValueOperators.Case<R, T>
@JvmName(name = "thenPropertyReceiverByValue")
open infix fun <R : Any, T> KProperty1<R, Boolean>.then(value: Value<R, T>): ConditionalValueOperators.Case<R, T>
@JvmName(name = "thenPropertyReceiverByField")
open infix fun <R : Any, T> KProperty1<R, Boolean>.then(value: Field<R, T>): ConditionalValueOperators.Case<R, T>
infix inline fun <R : Any, T> Value<R, Boolean>.then(value: T): ConditionalValueOperators.Case<R, T>
@JvmName(name = "thenByProperty")
open infix fun <R : Any, T> Value<R, Boolean>.then(value: KProperty1<R, T>): ConditionalValueOperators.Case<R, T>
open infix fun <R : Any, T> Value<R, Boolean>.then(value: Value<R, T>): ConditionalValueOperators.Case<R, T>
@JvmName(name = "thenByField")
open infix fun <R : Any, T> Value<R, Boolean>.then(value: Field<R, T>): ConditionalValueOperators.Case<R, T>
@JvmName(name = "thenFieldReceiverByResult")
infix inline fun <R : Any, T> Field<R, Boolean>.then(value: T): ConditionalValueOperators.Case<R, T>
@JvmName(name = "thenFieldReceiverByProperty")
open infix fun <R : Any, T> Field<R, Boolean>.then(value: KProperty1<R, T>): ConditionalValueOperators.Case<R, T>
@JvmName(name = "thenFieldReceiverByValue")
open infix fun <R : Any, T> Field<R, Boolean>.then(value: Value<R, T>): ConditionalValueOperators.Case<R, T>
@JvmName(name = "thenFieldReceiverByField")
open infix fun <R : Any, T> Field<R, Boolean>.then(value: Field<R, T>): ConditionalValueOperators.Case<R, T>

Instantiates a Case for the switch operator.

Link copied to clipboard
open infix fun <Root, Child> KProperty1<Root, *>.unsafe(child: String): Field<Root, Child>
open infix fun <Root, Type, Child> Field<Root, Type>.unsafe(child: String): Field<Root, Child>

Refers to a field child of the current field, with no compile-time safety.

open infix fun <Root, Child> KProperty1<Root, *>.unsafe(child: KProperty1<*, Child>): Field<Root, Child>
open infix fun <Root, Child> KProperty1<Root, *>.unsafe(child: Field<*, Child>): Field<Root, Child>
open infix fun <Root, Child> Field<Root, *>.unsafe(child: KProperty1<*, Child>): Field<Root, Child>
open infix fun <Root, Child> Field<Root, *>.unsafe(child: Field<*, Child>): Field<Root, Child>

Refers to a field child of the current field, without checking that it is a field available on the current object.