package bson
BSON main API
import reactivemongo.api.bson._ // { "name": "Johny", "surname": "Doe", "age": 28, "months": [1, 2, 3] } document ++ ("name" -> "Johny") ++ ("surname" -> "Doe") ++ ("age" -> 28) ++ ("months" -> array(1, 2, 3)) // { "_id": generatedId, "name": "Jane", "surname": "Doe", "age": 28, // "months": [1, 2, 3], "details": { "salary": 12345, // "inventory": ["foo", 7.8, 0, false] } } document ++ ("_id" -> generateId, "name" -> "Jane", "surname" -> "Doe", "age" -> 28, "months" -> array(1, 2, 3), "details" -> document( "salary" -> 12345L, "inventory" -> array("foo", 7.8, 0L, false)))
System properties:
The following properties can be set (e.g. using -D
option).
reactivemongo.api.bson.bufferSizeBytes
(integer; default:96
): Number of bytes used as initial size when allocating a new buffer.reactivemongo.api.bson.document.strict
(boolean; default:false
): Flag to enable strict reading of document (filter duplicate fields, see BSONDocument).
- Alphabetic
- By Inheritance
- bson
- Utils
- Aliases
- DefaultBSONHandlers
- BSONIdentityHandlers
- BSONIdentityLowPriorityHandlers
- LowPriority1BSONHandlers
- LowPriority2BSONHandlers
- LowPriority3BSONHandlers
- LowPriority4BSONHandlers
- LowPriorityBSONHandlersCompat
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Package Members
- package exceptions
Type Members
- sealed abstract class BSONArray extends BSONValue
A
BSONArray
(type0x04
) is a indexed sequence of BSONValue.A
BSONArray
(type0x04
) is a indexed sequence of BSONValue.import reactivemongo.api.bson._ BSONArray(BSONString("foo"), BSONDouble(1.2D))
- abstract class BSONArrayCollectionReader[M[_], T] extends BSONReader[M[T]]
- Attributes
- protected
- Definition Classes
- LowPriority1BSONHandlers
- final class BSONBinary extends BSONValue
A BSON binary value.
A BSON binary value.
import reactivemongo.api.bson.{ BSONBinary, Subtype } BSONBinary("foo".getBytes("UTF-8"), Subtype.GenericBinarySubtype)
- final class BSONBoolean extends BSONValue with Value
BSON boolean value
- sealed trait BSONBooleanLike extends AnyRef
A BSON value that can be seen as a boolean.
A BSON value that can be seen as a boolean.
Conversions:
number = 0 ~> false
number != 0 ~> true
boolean
undefined ~> false
null ~> false
import scala.util.Success import reactivemongo.api.bson.{ BSONBooleanLike, BSONDocument, BSONInteger } val bi = BSONInteger(1) assert(bi.asTry[BSONBooleanLike].flatMap(_.toBoolean) == Success(true)) val doc = BSONDocument("field" -> bi) assert(doc.getAsTry[BSONBooleanLike]("field"). flatMap(_.toBoolean) == Success(true))
- final class BSONDateTime extends BSONValue with Value
BSON date time value
- final class BSONDecimal extends BSONValue with Value with Value
Value wrapper for a BSON 128-bit decimal.
- sealed abstract class BSONDocument extends BSONValue with ElementProducer with BSONDocumentLowPriority with BSONDocumentExperimental
A
BSONDocument
structure (BSON type0x03
).A
BSONDocument
structure (BSON type0x03
).A
BSONDocument
is an unordered set of fields(String, BSONValue)
.Note: The insertion/initial order of the fields may not be maintained through the operations.
- type BSONDocumentHandler[T] = BSONDocumentReader[T] with BSONDocumentWriter[T] with BSONHandler[T]
Convenient type alias for document handlers
- trait BSONDocumentReader[T] extends BSONReader[T]
- trait BSONDocumentWriter[T] extends BSONWriter[T]
- final class BSONDouble extends BSONValue with Value with Value
A BSON Double.
A BSON Double.
reactivemongo.api.bson.BSONDouble(1.23D)
- sealed abstract class BSONElement extends ElementProducer
BSON element, typically a pair of name and BSONValue.
BSON element, typically a pair of name and BSONValue.
import reactivemongo.api.bson.{ BSONElement, BSONString } BSONElement("name", BSONString("value"))
- trait BSONHandler[T] extends BSONReader[T] with BSONWriter[T]
A BSON handler is able to both read and write
T
values from/to BSON representation.A BSON handler is able to both read and write
T
values from/to BSON representation.import scala.util.Try import reactivemongo.api.bson.{ BSONHandler, BSONValue } def roundtrip[T](value: T)(implicit handler: BSONHandler[T]): Try[Boolean] = for { bson: BSONValue <- handler.writeTry(value) dser <- handler.readTry(bson) } yield (dser == value) // true
- final class BSONInteger extends BSONValue with Value with Value
BSON Integer value
- final class BSONJavaScript extends BSONValue
BSON JavaScript value.
- final class BSONJavaScriptWS extends BSONValue
BSON JavaScript value with scope (WS).
- final class BSONLong extends BSONValue with Value with Value
BSON Long value
- sealed trait BSONMaxKey extends BSONValue
BSON Max key value
- sealed trait BSONMinKey extends BSONValue
BSON Min key value
- sealed trait BSONNull extends BSONValue with Value
BSON null value
- sealed trait BSONNumberLike extends AnyRef
A BSON value that can be seen as a number.
A BSON value that can be seen as a number.
Conversions:
- numeric BSON types (BSONDecimal, BSONDouble, BSONInteger, BSONLong)
- BSON date/time ~> long (BSONDateTime
.value
) - BSON timestamp ~> long (BSONTimestamp.value)
import scala.util.Success import reactivemongo.api.bson.{ BSONNumberLike, BSONDocument, BSONInteger } val bi = BSONInteger(1) assert(bi.asTry[BSONNumberLike].flatMap(_.toLong) == Success(1L)) val doc = BSONDocument("field" -> bi) assert(doc.getAsTry[BSONNumberLike]("field"). flatMap(_.toDouble) == Success(1D))
- sealed abstract class BSONObjectID extends BSONValue
BSON ObjectId value.
BSON ObjectId value.
import scala.util.Try import reactivemongo.api.bson.BSONObjectID val oid: BSONObjectID = BSONObjectID.generate() val _: Try[BSONObjectID] = BSONObjectID.parse(oid.stringify)
| Timestamp (seconds) | Machine identifier | Thread identifier | Increment
| --- | --- | --- | ---
| 4 bytes | 3 bytes | 2 bytes | 3 bytes
- trait BSONReader[T] extends AnyRef
A reader that produces an instance of
T
from a subtype of BSONValue. - final class BSONRegex extends BSONValue
BSON Regex value.
- sealed trait BSONStrictDocument extends BSONStrictDocumentLowPriority
EXPERIMENTAL: Strict documentation representation with at most one value per field name (no duplicate).
EXPERIMENTAL: Strict documentation representation with at most one value per field name (no duplicate).
import reactivemongo.api.bson.BSONDocument def strict1 = // { 'foo': 1 } BSONDocument.strict("foo" -> 1, "foo" -> 2) def strict2 = BSONDocument("foo" -> 1, "foo" -> 2).asStrict assert(strict1 == strict2)
- final class BSONString extends BSONValue
A BSON string.
A BSON string.
reactivemongo.api.bson.BSONString("foo")
- final class BSONSymbol extends BSONValue
BSON Symbol value.
- sealed abstract class BSONTimestamp extends BSONValue with Value
BSON Timestamp value
- sealed trait BSONUndefined extends BSONValue with Value
BSON undefined value
- sealed trait BSONValue extends AnyRef
A BSON value
- trait BSONWriter[T] extends AnyRef
A writer that produces a subtype of BSONValue from an instance of
T
. - type BaseColl[T] = Iterable[T]
- Definition Classes
- Aliases
- sealed trait ElementProducer extends Producer[BSONElement]
See BSONDocument
- trait FieldNaming extends (String) => String
Naming strategy, to map each class property to the corresponding field.
- trait KeyReader[T] extends AnyRef
Mapping from a BSON string to
T
- trait KeyWriter[T] extends AnyRef
Mapping from a BSON string to
T
.Mapping from a BSON string to
T
.final class Foo(val v: String) extends AnyVal val dict = Map[Foo, Int]( (new Foo("key") -> 1), (new Foo("name") -> 2)) import reactivemongo.api.bson.KeyWriter implicit def fooKeyWriter: KeyWriter[Foo] = KeyWriter.safe[Foo] { foo => "foo:" + foo.v } reactivemongo.api.bson.BSON.writeDocument(dict) // Success = {'foo:key': 1, 'foo:name': 2}
- sealed trait MacroConfiguration extends AnyRef
Macro configuration;
Macro configuration;
It allows to configure compile time options, and behaviour to be retained at runtime (field & type naming).
import reactivemongo.api.bson.{ BSONDocumentReader, MacroConfiguration, Macros } case class Foo(name: String) val r1: BSONDocumentReader[Foo] = Macros.configured.reader[Foo] val r2: BSONDocumentReader[Foo] = Macros.configured( MacroConfiguration.simpleTypeName).reader[Foo]
- sealed trait MacroOptions extends AnyRef
Macros with 'Opts' suffix will take additional options in the form of type parameters that will customize behaviour of the macros during compilation.
Macros with 'Opts' suffix will take additional options in the form of type parameters that will customize behaviour of the macros during compilation.
import reactivemongo.api.bson.{ BSONDocumentWriter, Macros, MacroOptions } case class Bar(score: Float) val w: BSONDocumentWriter[Bar] = Macros.using[MacroOptions.Default].writer[Bar]
- sealed trait Producer[T] extends AnyRef
- type StringOps = scala.collection.StringOps
- Definition Classes
- Aliases
- sealed trait Subtype extends AnyRef
Binary Subtype
- trait TypeNaming extends (Class[_]) => String
Naming strategy, to map each class to a discriminator value.
Naming strategy, to map each class to a discriminator value.
import reactivemongo.api.bson.{ MacroConfiguration, TypeNaming } val cfg1 = MacroConfiguration(typeNaming = TypeNaming.FullName) val cfg2 = MacroConfiguration(typeNaming = TypeNaming.FullName) val cfg3 = MacroConfiguration( typeNaming = TypeNaming { cls: Class[_] => "_" + cls.getSimpleName })
- final class ¬[A, B] extends AnyRef
Type level evidence that type
A
is not typeB
.Type level evidence that type
A
is not typeB
.- Annotations
- @SuppressWarnings()
Value Members
- def array(values: Producer[BSONValue]*): BSONArray
Returns an array with given values.
Returns an array with given values.
import reactivemongo.api.bson._ val arr = array("bar", 1L) // [ 'bar', NumberLong(1) ]
- def array: BSONArray
Returns an empty array.
Returns an empty array.
import reactivemongo.api.bson._ val arr1 = BSONString("bar") +: array // [ 'bar' ] val arr2 = BSONInteger(1) +: arr1 // [ 1, 'bar' ]
- def bsonLocalDateHandler(zone: ZoneId): BSONHandler[LocalDate]
Returns a BSON handler for
java.time.LocalDate
, considering the specified timezone
.Returns a BSON handler for
java.time.LocalDate
, considering the specified timezone
.- Definition Classes
- DefaultBSONHandlers
- Annotations
- @inline()
- implicit val bsonLocalDateHandler: BSONHandler[LocalDate]
- Definition Classes
- DefaultBSONHandlers
- def bsonLocalDateTimeHandler(zone: ZoneId): BSONHandler[LocalDateTime]
Returns a BSON handler for
java.time.LocalDateTime
, considering the specified timezone
.Returns a BSON handler for
java.time.LocalDateTime
, considering the specified timezone
.- Definition Classes
- DefaultBSONHandlers
- Annotations
- @inline()
- implicit val bsonLocalDateTimeHandler: BSONHandler[LocalDateTime]
- Definition Classes
- DefaultBSONHandlers
- implicit def bsonMapKeyWriter[K, V <: BSONValue](implicit keyWriter: KeyWriter[K]): BSONDocumentWriter[Map[K, V]]
- Definition Classes
- LowPriority3BSONHandlers
- implicit def bsonMapWriter[V <: BSONValue]: BSONDocumentWriter[Map[String, V]]
- Definition Classes
- LowPriority1BSONHandlers
- def bsonOffsetDateTimeHandler(zone: ZoneId): BSONHandler[OffsetDateTime]
Returns a BSON handler for
java.time.OffsetDateTime
, considering the specified timezone
.Returns a BSON handler for
java.time.OffsetDateTime
, considering the specified timezone
.- Definition Classes
- DefaultBSONHandlers
- Annotations
- @inline()
- implicit val bsonOffsetDateTimeHandler: BSONHandler[OffsetDateTime]
- Definition Classes
- DefaultBSONHandlers
- def bsonZonedDateTimeHandler(zone: ZoneId): BSONHandler[ZonedDateTime]
Returns a BSON handler for
java.time.ZonedDateTime
, considering the specified timezone
.Returns a BSON handler for
java.time.ZonedDateTime
, considering the specified timezone
.- Definition Classes
- DefaultBSONHandlers
- Annotations
- @inline()
- implicit val bsonZonedDateTimeHandler: BSONHandler[ZonedDateTime]
- Definition Classes
- DefaultBSONHandlers
- implicit final def collectionReader[M[_], T](implicit f: Factory[T, M[T]], reader: BSONReader[T]): BSONReader[M[T]]
- Definition Classes
- LowPriorityBSONHandlersCompat
- implicit def collectionWriter[T, Repr](implicit arg0: (Repr) => Iterable[T], writer: BSONWriter[T], notOption: ¬[Repr, Option[T]]): BSONWriter[Repr]
- Definition Classes
- LowPriority1BSONHandlers
- Annotations
- @silent()
- def document(elements: ElementProducer*): BSONDocument
Returns a document with given elements.
Returns a document with given elements.
import reactivemongo.api.bson._ val doc = document("foo" -> 1) // { 'foo': 1 }
- def document: BSONDocument
Returns an empty document.
Returns an empty document.
import reactivemongo.api.bson._ val doc = document ++ ("foo" -> 1) // { 'foo': 1 }
- def element(name: String, value: BSONValue): BSONElement
- def generateId: BSONObjectID
Returns a newly generated object ID.
- implicit def mapKeyReader[K, V](implicit keyReader: KeyReader[K], valueReader: BSONReader[V]): BSONDocumentReader[Map[K, V]]
- Definition Classes
- LowPriority2BSONHandlers
- implicit def mapKeySafeWriter[K, V](implicit keyWriter: KeyWriter[K] with SafeKeyWriter[K], valueWriter: BSONWriter[V] with SafeBSONWriter[V]): BSONDocumentWriter[Map[K, V]]
- Definition Classes
- LowPriority3BSONHandlers
- implicit def mapKeyWriter[K, V](implicit keyWriter: KeyWriter[K], valueWriter: BSONWriter[V]): BSONDocumentWriter[Map[K, V]]
- Definition Classes
- LowPriority4BSONHandlers
- implicit def mapReader[V](implicit valueReader: BSONReader[V]): BSONDocumentReader[Map[String, V]]
- Definition Classes
- LowPriority1BSONHandlers
- implicit def mapSafeWriter[V](implicit valueWriter: BSONWriter[V] with SafeBSONWriter[V]): BSONDocumentWriter[Map[String, V]]
- Definition Classes
- LowPriority1BSONHandlers
- implicit def mapWriter[V](implicit valueWriter: BSONWriter[V]): BSONDocumentWriter[Map[String, V]]
- Definition Classes
- LowPriority2BSONHandlers
- implicit def nameValueOrdering[T <: BSONValue]: Ordering[(String, T)]
Key/value ordering
Key/value ordering
import reactivemongo.api.bson.BSONString Seq("foo" -> BSONString("1"), "bar" -> BSONString("1")). sorted // == [ "bar" -> .., "foo" -> .. ]
- object BSON
Utility functions
- object BSONArray
BSONArray utilities
BSONArray utilities
import reactivemongo.api.bson.{ BSONArray, BSONString } BSONArray("foo", 1) match { case BSONArray(BSONString(s) +: _) => s == "foo" case _ => false }
- implicit object BSONArrayIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONArray]
- Definition Classes
- BSONIdentityHandlers
- object BSONBinary
BSONBinary utilities
BSONBinary utilities
import reactivemongo.api.bson.{ BSONBinary, Subtype } val bin1 = BSONBinary( "foo".getBytes("UTF-8"), Subtype.GenericBinarySubtype) // See Subtype.UuidSubtype val uuid = BSONBinary(java.util.UUID.randomUUID())
- implicit object BSONBinaryHandler extends BSONHandler[Array[Byte]] with SafeBSONWriter[Array[Byte]]
- Definition Classes
- DefaultBSONHandlers
- implicit object BSONBinaryIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONBinary]
- Definition Classes
- BSONIdentityHandlers
- object BSONBoolean
- implicit object BSONBooleanHandler extends BSONHandler[Boolean] with SafeBSONWriter[Boolean]
- Definition Classes
- DefaultBSONHandlers
- implicit object BSONBooleanIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONBoolean]
- Definition Classes
- BSONIdentityHandlers
- object BSONBooleanLike
BSONBooleanLike utilities
- object BSONDateTime
- implicit object BSONDateTimeHandler extends BSONHandler[Instant] with SafeBSONWriter[Instant]
- Definition Classes
- DefaultBSONHandlers
- implicit object BSONDateTimeIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONDateTime]
- Definition Classes
- BSONIdentityHandlers
- object BSONDecimal
- implicit object BSONDecimalHandler extends BSONHandler[BigDecimal]
- Definition Classes
- DefaultBSONHandlers
- implicit object BSONDecimalIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONDecimal]
- Definition Classes
- BSONIdentityHandlers
- object BSONDocument
BSONDocument factories & utilities.
BSONDocument factories & utilities.
reactivemongo.api.bson.BSONDocument("foo" -> 1, "bar" -> "lorem")
- object BSONDocumentHandler
Handler factory
- implicit object BSONDocumentIdentity extends BSONDocumentReader[BSONDocument] with BSONDocumentWriter[BSONDocument]
- Definition Classes
- BSONIdentityHandlers
- object BSONDocumentReader
- object BSONDocumentWriter
- object BSONDouble
BSONDouble utilities
BSONDouble utilities
import reactivemongo.api.bson.BSONDouble BSONDouble(1.23D) match { case BSONDouble(v) => assert(v == 1.23D) case _ => ??? }
- implicit object BSONDoubleHandler extends BSONHandler[Double] with SafeBSONWriter[Double]
- Definition Classes
- DefaultBSONHandlers
- implicit object BSONDoubleIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONDouble]
- Definition Classes
- BSONIdentityHandlers
- object BSONElement extends BSONElementLowPriority
BSONElement factories and utilities.
- implicit object BSONFloatHandler extends BSONHandler[Float] with SafeBSONWriter[Float]
- Definition Classes
- DefaultBSONHandlers
- object BSONHandler
- object BSONInteger
- implicit object BSONIntegerHandler extends BSONHandler[Int] with SafeBSONWriter[Int]
- Definition Classes
- DefaultBSONHandlers
- implicit object BSONIntegerIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONInteger]
- Definition Classes
- BSONIdentityHandlers
- object BSONJavaScript
- implicit object BSONJavaScriptIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONJavaScript]
- Definition Classes
- BSONIdentityHandlers
- object BSONJavaScriptWS
- implicit object BSONJavaScriptWSIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONJavaScriptWS]
- Definition Classes
- BSONIdentityHandlers
- object BSONLong
- implicit object BSONLongHandler extends BSONHandler[Long] with SafeBSONWriter[Long]
- Definition Classes
- DefaultBSONHandlers
- implicit object BSONLongIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONLong]
- Definition Classes
- BSONIdentityHandlers
- object BSONMaxKey extends BSONMaxKey
- implicit object BSONMaxKeyIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONMaxKey]
- Definition Classes
- BSONIdentityHandlers
- object BSONMinKey extends BSONMinKey
- implicit object BSONMinKeyIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONMinKey]
- Definition Classes
- BSONIdentityHandlers
- object BSONNull extends BSONNull
- implicit object BSONNullIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONNull]
- Definition Classes
- BSONIdentityHandlers
- object BSONNumberLike
BSONNumberLike utilities
- object BSONObjectID
BSONObjectID utilities
- implicit object BSONObjectIDIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONObjectID]
- Definition Classes
- BSONIdentityHandlers
- object BSONReader
BSONReader factories
- object BSONRegex
- implicit object BSONRegexIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONRegex]
- Definition Classes
- BSONIdentityHandlers
- object BSONString
BSONString utilities
BSONString utilities
import reactivemongo.api.bson.BSONString BSONString("foo") match { case BSONString(v) => v == "foo" case _ => false }
- implicit object BSONStringHandler extends BSONHandler[String] with SafeBSONWriter[String]
- Definition Classes
- DefaultBSONHandlers
- implicit object BSONStringIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONString]
- Definition Classes
- BSONIdentityHandlers
- object BSONSymbol
- implicit object BSONSymbolIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONSymbol]
- Definition Classes
- BSONIdentityHandlers
- object BSONTimestamp
Timestamp companion
- implicit object BSONTimestampIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONTimestamp]
- Definition Classes
- BSONIdentityHandlers
- implicit object BSONURIHandler extends BSONHandler[URI] with SafeBSONWriter[URI]
- Definition Classes
- DefaultBSONHandlers
- implicit object BSONURLHandler extends BSONHandler[URL] with SafeBSONWriter[URL]
- Definition Classes
- DefaultBSONHandlers
- object BSONUndefined extends BSONUndefined
Single value for BSONUndefined type
- implicit object BSONUndefinedIdentity extends bson.DefaultBSONHandlers.IdentityBSONHandler[BSONUndefined]
- Definition Classes
- BSONIdentityHandlers
- object BSONValue extends BSONValueLowPriority1
BSONValue factories and utilities
- implicit object BSONValueIdentity extends BSONReader[BSONValue] with BSONWriter[BSONValue]
- Definition Classes
- BSONIdentityLowPriorityHandlers
- object BSONWriter
- object ElementProducer extends ElementProducerLowPriority
- object FieldNaming
Naming companion
- object KeyReader
- object KeyWriter extends LowPriorityKeyWriter
KeyWriter factories
- object MacroConfiguration
MacroConfiguration factories and utilities
- object MacroOptions
MacroOptions factories & utilities.
- object Macros
Macros for generating
BSONReader
andBSONWriter
at compile time.Macros for generating
BSONReader
andBSONWriter
at compile time.import reactivemongo.api.bson.Macros case class Person(name: String, surname: String) implicit val personHandler = Macros.handler[Person]
- See also
MacroOptions for specific options
MacroConfiguration for extended configuration
- object Subtype
- object TypeNaming
TypeNaming factories
- object ¬
- Annotations
- @SuppressWarnings()