Skip to content

BsonDocument

Implementation of opensavvy.ktmongo.bson.BsonDocument based on the official MongoDB drivers.

To create instances of this class, see [`BsonFactory`](../../../bson/opensavvy.ktmongo.bson/-bson-factory/index.md).

<blockquote markdown>

This page describes the BSON implementation based on the official MongoDB drivers. To learn more about the general BSON operations, see [`opensavvy.ktmongo.bson.BsonDocument`](../../../bson/opensavvy.ktmongo.bson/-bson-document/index.md).


</blockquote>
### Navigating BSON types
This interface is part of the BSON trinity:

 - [`BsonDocument`](index.md) represents an entire BSON document.


 - [`BsonArray`](../-bson-array/index.md) represents an array of BSON values.


 - [`BsonValue`](../-bson-value/index.md) represents a single value in isolation.


### Usage
```kotlin
val bson: BsonDocument = …

for ((name, field) in bson) {
    println("Field: $name • ${field.type}")
}
```

Implementation of a KtMongo opensavvy.ktmongo.bson.BsonDocument that wraps a org.bson.BsonDocument.

To create an instance of this class, see BsonFactory.readDocument.

Types

Field

expect class Field(name: String, value: BsonValue) : BsonDocument.Field

actual class Field(val name: String, val value: BsonValue) : BsonDocument.Field

Serializer

Serializer for the official opensavvy.ktmongo.bson.official.BsonDocument implementation.

Properties

factory

expect open override val factory: BsonFactory

actual open override val factory: BsonFactory

fields

abstract val fields: Set<String>
open override val fields: Set<String>

raw

val raw: BsonDocument

size

abstract val size: Int
open override val size: Int

Functions

asIterable

expect open override fun asIterable(): Iterable<BsonDocument.Field>

actual open override fun asIterable(): Iterable<BsonDocument.Field>

asMap

expect open override fun asMap(): Map<String, BsonValue>

actual open override fun asMap(): Map<String, BsonValue>

asSequence

expect open override fun asSequence(): Sequence<BsonDocument.Field>

actual open override fun asSequence(): Sequence<BsonDocument.Field>

asValue

expect open override fun asValue(): BsonValue

actual open override fun asValue(): BsonValue

decode

@LowLevelApi
abstract fun <T> decode(type: KType): T
@LowLevelApi
open override fun <T> decode(type: KType): T

equals

open operator override fun equals(other: Any?): Boolean

get

expect open operator override fun get(field: String): BsonValue?

actual open operator override fun get(field: String): BsonValue?

hashCode

open override fun hashCode(): Int

isEmpty

open fun isEmpty(): Boolean
open fun isEmpty(): Boolean

isNotEmpty

open fun isNotEmpty(): Boolean
open fun isNotEmpty(): Boolean

iterator

expect open operator override fun iterator(): Iterator<BsonDocument.Field>

actual open operator override fun iterator(): Iterator<BsonDocument.Field>

toByteArray

abstract fun toByteArray(): ByteArray
@LowLevelApi
open override fun toByteArray(): ByteArray

toString

abstract override fun toString(): String
open override fun toString(): String