arrayFilter
open fun <Item> arrayFilter(id: String, filter: ArrayFiltersOptionDsl<Item>.(it: Field<ArrayFiltersOptionDsl.IteratorType<Item>, Item>) -> Unit)(source)
Declares an array filter, which can then be passed to UpdateQuery.filter.
To learn more about the usage of array filters, see UpdateQuery.filter.
Example
class User(
val name: String,
val age: Int,
val score: Int,
)
class Group(
val _id: ObjectId,
val users: List<User>,
)
groups.updateOne(
filter = {
Group::_id eq ObjectId("…")
},
options = {
arrayFilter("adult") {
it / User::age gte 18
}
},
update = {
Group::users.filter("adult") / User::score inc 1
}
)Content copied to clipboard
Note the it parameter in the arrayFilter function, which allows declaring a filter expression on a given element. The arrayFilter block accepts the same syntax as find().
Note that UpdateQuery.filter has an overload that registers the option automatically. If you use it, you don't need to call this function at all.