Skip to content

MongoDB request DSLopensavvy.ktmongo.dsl.queryUpdateWithPipelineQueryproject

project

open fun project(block: ProjectStageOperators<Document>.() -> Unit)

Specify which fields should be kept.

This method is equivalent to the `$project stage`.

Difference with $set and $

unset This stage is quite similar to $set and $unset:

  • Like $set, this stage can override existing fields. However, $project deletes fields that aren't mentioned, whereas $set leaves them as-is.

  • Like $unset, this stage can delete fields. However, $project explicitly specifies the fields to keep, whereas $unset explicitly specifies the fields to remove.

Example

class User(
    val name: String,
    val age: Int,
    val score: Int?,
)

users.updateManyWithPipeline {
    project {
        include(User::age)
        User::score set 12
    }
}

External resources