Packages

sealed trait UpdateBuilder extends AnyRef

Builder for update operations.

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. UpdateBuilder
  2. AnyRef
  3. Any
Implicitly
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Abstract Value Members

  1. abstract def bypassDocumentValidation: Boolean

    the flag to bypass document validation during the operation

  2. abstract def ordered: Boolean

    the ordered behaviour

  3. abstract def writeConcern: commands.WriteConcern

    the writer concern to be used

Concrete Value Members

  1. final def element[Q, U](q: Q, u: U, upsert: Boolean, multi: Boolean, collation: Option[Collation], arrayFilters: Seq[P.Document])(implicit qw: P.Writer[Q], uw: P.Writer[U]): Future[UpdateCommand.UpdateElement]

    Prepares an UpdateCommand.UpdateElement

    Annotations
    @silent("constructor\\ UpdateElement\\ in\\ class\\ UpdateElement\\ is\\ deprecated.*")
  2. final def element[Q, U](q: Q, u: U, upsert: Boolean, multi: Boolean, collation: Option[Collation])(implicit qw: P.Writer[Q], uw: P.Writer[U]): Future[UpdateCommand.UpdateElement]

    Prepares an UpdateCommand.UpdateElement

  3. final def element[Q, U](q: Q, u: U, upsert: Boolean = false, multi: Boolean = false)(implicit qw: P.Writer[Q], uw: P.Writer[U]): Future[UpdateCommand.UpdateElement]

    Prepares an UpdateCommand.UpdateElement

  4. final def many(updates: Iterable[UpdateCommand.UpdateElement])(implicit ec: ExecutionContext): Future[MultiBulkWriteResult]

    Updates many documents, according the ordered behaviour.

    Updates many documents, according the ordered behaviour.

    import scala.concurrent.{ ExecutionContext, Future }
    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def updateMany(
      coll: BSONCollection,
      docs: Iterable[BSONDocument])(implicit ec: ExecutionContext) = {
      val update = coll.update(ordered = true)
      val elements = Future.sequence(docs.map { doc =>
        update.element(
          q = BSONDocument("update" -> "selector"),
          u = BSONDocument(f"$$set" -> doc),
          upsert = true,
          multi = false)
      })
    
      elements.flatMap { ups =>
        update.many(ups) // Future[MultiBulkWriteResult]
      }
    }
  5. final def many(firstUpdate: UpdateCommand.UpdateElement, updates: Iterable[UpdateCommand.UpdateElement])(implicit ec: ExecutionContext): Future[MultiBulkWriteResult]

    Updates many documents, according the ordered behaviour.

    Updates many documents, according the ordered behaviour.

    import scala.concurrent.{ ExecutionContext, Future }
    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def updateMany(
      coll: BSONCollection,
      first: BSONDocument,
      docs: Iterable[BSONDocument])(implicit ec: ExecutionContext) = {
      val update = coll.update(ordered = true)
      val elements = Future.sequence(docs.map { doc =>
        update.element(
          q = BSONDocument("update" -> "selector"),
          u = BSONDocument(f"$$set" -> doc),
          upsert = true,
          multi = false)
      })
    
      for {
        first <- update.element(
          q = BSONDocument("update" -> "selector"),
          u = BSONDocument(f"$$set" -> first),
          upsert = true,
          multi = false)
        ups <- elements
        res <- update.many(ups) // Future[MultiBulkWriteResult]
      } yield res
    }
  6. final def one[Q, U](q: Q, u: U, upsert: Boolean, multi: Boolean, collation: Option[Collation], arrayFilters: Seq[P.Document])(implicit ec: ExecutionContext, qw: P.Writer[Q], uw: P.Writer[U]): Future[UpdateWriteResult]

    Performs a single update (see UpdateCommand.UpdateElement).

  7. final def one[Q, U](q: Q, u: U, upsert: Boolean, multi: Boolean, collation: Option[Collation])(implicit ec: ExecutionContext, qw: P.Writer[Q], uw: P.Writer[U]): Future[UpdateWriteResult]

    Performs a single update (see UpdateCommand.UpdateElement).

  8. final def one[Q, U](q: Q, u: U, upsert: Boolean = false, multi: Boolean = false)(implicit ec: ExecutionContext, qw: P.Writer[Q], uw: P.Writer[U]): Future[UpdateWriteResult]

    Performs a single update (see UpdateCommand.UpdateElement).