Skip to content

BsonNode

A node in the BSON AST.

Each implementation of this interface is a logical BSON node in our own intermediary representation. Each node knows how to writeTo itself into a BSON document.

To learn more about how the tree is formed, see Node.

Security

Implementing this interface allows injecting arbitrary BSON into a request. Be very careful not to make injections possible.

Implementation notes

Prefer implementing AbstractBsonNode instead of implementing this interface directly.

Debugging notes

Use toString to view the JSON representation of this expression.

Inheritors

Types

Companion

object Companion

Properties

context

The context used to generate this expression.

Functions

freeze

@LowLevelApi
abstract override fun freeze()

Makes this node immutable.

After this method has been called, the expression can never be modified again. This ensures that nodes cannot change after they have been used within other nodes.

To learn more about this process, see Node.

Thread-safety

Instances of <strong>Node</strong> are not thread-safe before <strong>freeze</strong> has been called.

Once the freeze function has returned, then the node must be immutable and thread-safe.

simplify

@LowLevelApi
abstract fun simplify(): BsonNode?

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

Returns null when the current expression was simplified into a no-op (= it does nothing).

toBson

Writes the result of simplifying to a new BsonDocument.

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.