Packages

  • package root
    Definition Classes
    root
  • package reactivemongo
    Definition Classes
    root
  • package api
    Definition Classes
    reactivemongo
  • package bson

    BSON main API

    BSON main API

    import reactivemongo.api.bson._
    
    // { "name": "Johny", "surname": "Doe", "age": 28, "months": [1, 2, 3] }
    BSONDocument.empty ++ ("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 JVM -D options).

    • 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.asStrict).
    Definition Classes
    api
  • object Macros

    Macros for generating BSONReader and BSONWriter at compile time.

    Macros for generating BSONReader and BSONWriter at compile time.

    import reactivemongo.api.bson.Macros
    
    case class Person(name: String, surname: String)
    
    implicit val personHandler = Macros.handler[Person]
    Definition Classes
    bson
    See also

    MacroOptions for specific options

    MacroConfiguration for extended configuration

  • Annotations
  • LocalVar
  • Placeholder
  • WithOptions

object Annotations

Annotations to use on case classes that are being processed by macros.

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Annotations
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. final class DefaultValue[T] extends Annotation with StaticAnnotation

    Indicates a default value for a class property, when there is no corresponding BSON value when reading.

    Indicates a default value for a class property, when there is no corresponding BSON value when reading.

    It enables a behaviour similar to MacroOptions.ReadDefaultValues, without requiring the define a global default value for the property.

    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.Macros,
      Macros.Annotations.DefaultValue
    
    case class Foo(
      title: String,
      @DefaultValue(1.23D) score: Double)
    
    val reader = Macros.reader[Foo]
    
    reader.readTry(BSONDocument("title" -> "Bar")) // No BSON 'score'
    // Success: Foo(title = "Bar", score = 1.23D)
    Annotations
    @param()
  2. final class Flatten extends Annotation with StaticAnnotation

    Indicates that if a property is represented as a document itself, the document fields are directly included in top document, rather than nesting it.

    Indicates that if a property is represented as a document itself, the document fields are directly included in top document, rather than nesting it.

    import reactivemongo.api.bson.Macros.Annotations.Flatten
    
    case class Range(start: Int, end: Int)
    
    case class LabelledRange(
      name: String,
      @Flatten range: Range)
    
    val flattened = reactivemongo.api.bson.BSONDocument(
      "name" -> "foo", "start" -> 0, "end" -> 1)
    
    // Rather than:
    // BSONDocument("name" -> "foo", "range" -> BSONDocument(
    //   "start" -> 0, "end" -> 1))
    Annotations
    @param()
  3. final class Ignore extends Annotation with StaticAnnotation

    Indicates that the annotated field must not be serialized to BSON.

    Indicates that the annotated field must not be serialized to BSON. Annotation @transient can also be used to achieve the same purpose.

    If the annotate field must be read, a default value must be defined, either from the field default value, or using the annotation DefaultValue (specific to BSON).

    Annotations
    @param()
  4. final class Key extends Annotation with StaticAnnotation

    Specify a key different from field name in your case class.

    Specify a key different from field name in your case class. Convenient to use when you'd like to leverage mongo's _id index but don't want to actually use _id in your code.

    import reactivemongo.api.bson.Macros.Annotations.Key
    
    case class Website(@Key("_id") url: String)

    Generated handler will map the url field in your code to _id field in BSON

    Annotations
    @param()
  5. final class NoneAsNull extends Annotation with StaticAnnotation

    Indicates that if an Option property is empty, it will be represented by BSONNull rather than being omitted.

    Indicates that if an Option property is empty, it will be represented by BSONNull rather than being omitted.

    import reactivemongo.api.bson.Macros.Annotations.NoneAsNull
    
    case class Foo(
      title: String,
      @NoneAsNull description: Option[String])
    Annotations
    @param()
  6. final class Reader[T] extends Annotation with StaticAnnotation

    Indicates a BSON reader to be used for a specific property, possibly overriding the default one from the implicit scope.

    Indicates a BSON reader to be used for a specific property, possibly overriding the default one from the implicit scope.

    import reactivemongo.api.bson.{
      BSONDocument, BSONDouble, BSONString, BSONReader
    }
    import reactivemongo.api.bson.Macros,
      Macros.Annotations.Reader
    
    val scoreReader: BSONReader[Double] = BSONReader.collect[Double] {
      case BSONString(v) => v.toDouble
      case BSONDouble(b) => b
    }
    
    case class Foo(
      title: String,
      @Reader(scoreReader) score: Double)
    
    val reader = Macros.reader[Foo]
    
    reader.readTry(BSONDocument(
      "title" -> "Bar",
      "score" -> "1.23" // accepted by annotated scoreReader
    ))
    // Success: Foo(title = "Bar", score = 1.23D)
    Annotations
    @param()
  7. final class Writer[T] extends Annotation with StaticAnnotation

    Indicates a BSON writer to be used for a specific property, possibly overriding the default one from the implicit scope.

    Indicates a BSON writer to be used for a specific property, possibly overriding the default one from the implicit scope.

    import reactivemongo.api.bson.{ BSONString, BSONWriter }
    import reactivemongo.api.bson.Macros,
      Macros.Annotations.Writer
    
    val scoreWriter: BSONWriter[Double] = BSONWriter[Double] { d =>
      BSONString(d.toString) // write double as string
    }
    
    case class Foo(
      title: String,
      @Writer(scoreWriter) score: Double)
    
    val writer = Macros.writer[Foo]
    
    writer.writeTry(Foo(title = "Bar", score = 1.23D))
    // Success: BSONDocument("title" -> "Bar", "score" -> "1.23")
    Annotations
    @param()

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  9. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  13. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  14. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  15. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  16. def toString(): String
    Definition Classes
    AnyRef → Any
  17. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  18. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  19. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()

Inherited from AnyRef

Inherited from Any

Ungrouped