t

reactivemongo.api.collections

GenericQueryBuilder

trait GenericQueryBuilder[P <: SerializationPack] extends QueryOps

A builder that helps to make a fine-tuned query to MongoDB.

When the query is ready, you can call cursor to get a Cursor, or one if you want to retrieve just one document.

import scala.concurrent.{ ExecutionContext, Future }

import reactivemongo.api.bson.BSONDocument
import reactivemongo.api.bson.collection.BSONCollection

def firstFirst(coll: BSONCollection)(
  implicit ec: ExecutionContext): Future[Option[BSONDocument]] = {
  val queryBuilder = coll.find(BSONDocument.empty)
  queryBuilder.one[BSONDocument]
}
Annotations
@deprecated
Deprecated

(Since version 0.16.0) Internal: will be made private

Linear Supertypes
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. GenericQueryBuilder
  2. QueryOps
  3. AnyRef
  4. 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

Type Members

  1. abstract type Self <: GenericQueryBuilder[pack.type]
    Definition Classes
    GenericQueryBuilderQueryOps

Abstract Value Members

  1. abstract def commentString: Option[String]
  2. abstract def explainFlag: Boolean
  3. abstract def failoverStrategy: FailoverStrategy
    Annotations
    @deprecatedName(Symbol("failover"))
  4. abstract def hintOption: Option[P.Document]
  5. abstract def maxTimeMsOption: Option[Long]
  6. abstract def options: QueryOpts
  7. abstract val pack: P
  8. abstract def projectionOption: Option[P.Document]
  9. abstract def queryOption: Option[P.Document]
  10. abstract def snapshotFlag: Boolean
  11. abstract def sortOption: Option[P.Document]
  12. abstract def version: MongoWireVersion
    Attributes
    protected
  13. abstract def copy(queryOption: Option[P.Document] = queryOption, sortOption: Option[P.Document] = sortOption, projectionOption: Option[P.Document] = projectionOption, hintOption: Option[P.Document] = hintOption, explainFlag: Boolean = explainFlag, snapshotFlag: Boolean = snapshotFlag, commentString: Option[String] = commentString, options: QueryOpts = options, failoverStrategy: FailoverStrategy = failoverStrategy, maxTimeMsOption: Option[Long] = maxTimeMsOption): Self
    Annotations
    @deprecated
    Deprecated

    (Since version 0.16.0) Internal: will be made private

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. def +(other: String): String
    Implicit
    This member is added by an implicit conversion from GenericQueryBuilder[P] toany2stringadd[GenericQueryBuilder[P]] performed by method any2stringadd in scala.Predef.
    Definition Classes
    any2stringadd
  4. def ->[B](y: B): (GenericQueryBuilder[P], B)
    Implicit
    This member is added by an implicit conversion from GenericQueryBuilder[P] toArrowAssoc[GenericQueryBuilder[P]] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc
    Annotations
    @inline()
  5. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  6. def allowPartialResults: Self

    For queries against a sharded collection, returns partial results from the mongos if some shards are unavailable instead of throwing an error.

  7. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  8. def awaitData: Self

    Toggles AwaitData: Block a little while waiting for more data instead of returning immediately if no data.

    Toggles AwaitData: Block a little while waiting for more data instead of returning immediately if no data. Use along with TailableCursor.

    Definition Classes
    GenericQueryBuilderQueryOps
  9. def batchSize(n: Int): Self

    Sets an upper limit on the number of documents to retrieve per batch.

    Sets an upper limit on the number of documents to retrieve per batch. Defaults to 0 (meaning no upper limit - MongoDB decides).

    Definition Classes
    GenericQueryBuilderQueryOps
  10. lazy val builder: Builder[pack.type]
  11. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
  12. def collation(collation: Collation): Self

    Sets the collation document.

    Sets the collation document.

    Since

    MongoDB 3.4

    import reactivemongo.api.Collation
    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def foo(coll: BSONCollection, c: Collation) =
      coll.find(BSONDocument.empty).collation(c)
  13. def collation: Option[Collation]

    The optional collation to use for the find command (default: None).

    The optional collation to use for the find command (default: None).

    Annotations
    @inline()
    Since

    MongoDB 3.4

  14. def collection: Collection
  15. def comment(message: String): Self

    Adds a comment to this query, that may appear in the MongoDB logs.

    Adds a comment to this query, that may appear in the MongoDB logs.

    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def foo(coll: BSONCollection) = coll.find(BSONDocument.empty).
      comment("Any comment to trace the query")
  16. def cursor[T](readPreference: ReadPreference = readPreference, isMongo26WriteOp: Boolean = false)(implicit reader: P.Reader[T], cp: CursorProducer[T]): ProducedCursor

    Returns a Cursor for the result of this query.

    Returns a Cursor for the result of this query.

    import scala.concurrent.{ ExecutionContext, Future }
    
    import reactivemongo.api.Cursor
    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def findAllVisible(coll: BSONCollection)(
      implicit ec: ExecutionContext): Future[List[BSONDocument]] =
      coll.find(BSONDocument("visible" -> true)).
        cursor[BSONDocument]().collect[List](
         maxDocs = 10,
         err = Cursor.FailOnError[List[BSONDocument]]())
    T

    the results type

    readPreference

    The reactivemongo.api.ReadPreference for this query. If the ReadPreference implies that this query can be run on a secondary, the slaveOk flag will be set.

    reader

    the reader for the results type

  17. def ensuring(cond: (GenericQueryBuilder[P]) => Boolean, msg: => Any): GenericQueryBuilder[P]
    Implicit
    This member is added by an implicit conversion from GenericQueryBuilder[P] toEnsuring[GenericQueryBuilder[P]] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  18. def ensuring(cond: (GenericQueryBuilder[P]) => Boolean): GenericQueryBuilder[P]
    Implicit
    This member is added by an implicit conversion from GenericQueryBuilder[P] toEnsuring[GenericQueryBuilder[P]] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  19. def ensuring(cond: Boolean, msg: => Any): GenericQueryBuilder[P]
    Implicit
    This member is added by an implicit conversion from GenericQueryBuilder[P] toEnsuring[GenericQueryBuilder[P]] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  20. def ensuring(cond: Boolean): GenericQueryBuilder[P]
    Implicit
    This member is added by an implicit conversion from GenericQueryBuilder[P] toEnsuring[GenericQueryBuilder[P]] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  21. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  22. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  23. def exhaust: Self

    Toggles Exhaust

    Toggles Exhaust

    Definition Classes
    GenericQueryBuilderQueryOps
  24. def explain(flag: Boolean = true): Self

    Toggles explain mode.

    Toggles explain mode.

    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def foo(coll: BSONCollection) = coll.find(BSONDocument.empty).explain()
  25. def formatted(fmtstr: String): String
    Implicit
    This member is added by an implicit conversion from GenericQueryBuilder[P] toStringFormat[GenericQueryBuilder[P]] performed by method StringFormat in scala.Predef.
    Definition Classes
    StringFormat
    Annotations
    @inline()
  26. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  27. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  28. def hint(document: P.Document): Self

    Sets the hint document (a document that declares the index MongoDB should use for this query).

    Sets the hint document (a document that declares the index MongoDB should use for this query).

    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def foo(coll: BSONCollection) = coll.find(BSONDocument.empty).
      hint(BSONDocument("hint" -> 1)) // sets the hint
  29. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  30. def max(document: P.Document): Self

    Sets the max document.

    Sets the max document.

    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def foo(coll: BSONCollection) = coll.find(BSONDocument.empty).
      max(BSONDocument("field" -> "maxValue"))
  31. def max: Option[P.Document]

    The optional exclusive upper bound for a specific index (default: None).

    The optional exclusive upper bound for a specific index (default: None).

    Annotations
    @inline()
  32. def maxScan(max: Double): Self

    Sets the maxScan flag.

    Sets the maxScan flag.

    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def foo(coll: BSONCollection) = coll.find(BSONDocument.empty).
      maxScan(1.23D)
  33. def maxScan: Option[Double]

    This option specifies a maximum number of documents or index keys the query plan will scan.

    This option specifies a maximum number of documents or index keys the query plan will scan.

    Annotations
    @inline()
  34. def maxTimeMs(p: Long): Self

    Adds maxTimeMs to query.

    Adds maxTimeMs to query.

    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def foo(coll: BSONCollection) = coll.find(BSONDocument.empty).
      maxTimeMs(1000L/* 1s */)
  35. def min(document: P.Document): Self

    Sets the min document.

    Sets the min document.

    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def foo(coll: BSONCollection) = coll.find(BSONDocument.empty).
      min(BSONDocument("field" -> "minValue"))
  36. def min: Option[P.Document]

    The optional exclusive lower bound for a specific index (default: None).

    The optional exclusive lower bound for a specific index (default: None).

    Annotations
    @inline()
  37. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  38. def noCursorTimeout: Self

    Toggles NoCursorTimeout: The cursor will not expire automatically

    Toggles NoCursorTimeout: The cursor will not expire automatically

    Definition Classes
    GenericQueryBuilderQueryOps
  39. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  40. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  41. def one[T](readPreference: ReadPreference)(implicit reader: P.Reader[T], ec: ExecutionContext): Future[Option[T]]

    Sends this query and gets a future Option[T] (alias for reactivemongo.api.Cursor.headOption).

    Sends this query and gets a future Option[T] (alias for reactivemongo.api.Cursor.headOption).

    import scala.concurrent.{ ExecutionContext, Future }
    
    import reactivemongo.api.ReadPreference
    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def findUser(coll: BSONCollection, name: String)(
      implicit ec: ExecutionContext): Future[Option[BSONDocument]] =
      coll.find(BSONDocument("user" -> name)).
        one[BSONDocument](ReadPreference.primaryPreferred)
    T

    the results type

    readPreference

    The reactivemongo.api.ReadPreference for this query. If the ReadPreference implies that this query can be run on a secondary, the slaveOk flag will be set.

    reader

    the reader for the results type

  42. def one[T](implicit reader: P.Reader[T], ec: ExecutionContext): Future[Option[T]]

    Sends this query and gets a future Option[T] (alias for reactivemongo.api.Cursor.headOption) (using the default reactivemongo.api.ReadPreference).

    Sends this query and gets a future Option[T] (alias for reactivemongo.api.Cursor.headOption) (using the default reactivemongo.api.ReadPreference).

    import scala.concurrent.{ ExecutionContext, Future }
    
    import reactivemongo.api.bson.{ BSONDocument, Macros }
    import reactivemongo.api.bson.collection.BSONCollection
    
    case class User(name: String, pass: String)
    
    implicit val handler = Macros.reader[User]
    
    def findUser(coll: BSONCollection, name: String)(
      implicit ec: ExecutionContext): Future[Option[User]] =
      coll.find(BSONDocument("user" -> name)).one[User]
    T

    the results type

    reader

    the reader for the results type

  43. def oplogReplay: Self

    Toggles OplogReplay

    Toggles OplogReplay

    Definition Classes
    GenericQueryBuilderQueryOps
  44. def options(options: QueryOpts): Self
  45. def projection(p: P.Document): Self

    Sets the projection specification to determine which fields to include in the returned documents.

  46. def projection[Pjn](p: Pjn)(implicit writer: P.Writer[Pjn]): Self

    Sets the projection specification to determine which fields to include in the returned documents.

    Sets the projection specification to determine which fields to include in the returned documents.

    import scala.concurrent.{ ExecutionContext, Future }
    
    import reactivemongo.api.Cursor
    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def findAllWithProjection(coll: BSONCollection)(
      implicit ec: ExecutionContext): Future[List[BSONDocument]] =
      coll.find(BSONDocument.empty).
        projection(BSONDocument("age" -> 1)). // only consider 'age' field
        cursor[BSONDocument]().
        collect[List](
          maxDocs = 100,
          err = Cursor.FailOnError[List[BSONDocument]]())
    Pjn

    The type of the projection. An implicit Writer[Pjn] typeclass for handling it has to be in the scope.

  47. def readConcern(concern: ReadConcern): Self

    Sets the ReadConcern.

    Sets the ReadConcern.

    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def foo(coll: BSONCollection) = coll.find(BSONDocument.empty).
      readConcern(reactivemongo.api.ReadConcern.Local)
  48. def readConcern: ReadConcern

    The read concern

    The read concern

    Annotations
    @inline()
    Since

    MongoDB 3.6

  49. def requireOne[T](readPreference: ReadPreference)(implicit reader: P.Reader[T], ec: ExecutionContext): Future[T]

    Sends this query and gets a future T (alias for reactivemongo.api.Cursor.head).

    Sends this query and gets a future T (alias for reactivemongo.api.Cursor.head).

    import scala.concurrent.{ ExecutionContext, Future }
    
    import reactivemongo.api.ReadPreference
    import reactivemongo.api.bson.{ BSONDocument, Macros }
    import reactivemongo.api.bson.collection.BSONCollection
    
    case class User(name: String, pass: String)
    
    implicit val handler = Macros.handler[User]
    
    def findUser(coll: BSONCollection, name: String)(
      implicit ec: ExecutionContext): Future[User] =
      coll.find(BSONDocument("user" -> name)).
        requireOne[User](ReadPreference.primaryPreferred)
    T

    the results type

    readPreference

    The reactivemongo.api.ReadPreference for this query. If the ReadPreference implies that this query can be run on a secondary, the slaveOk flag will be set.

    reader

    the reader for the results type

  50. def requireOne[T](implicit reader: P.Reader[T], ec: ExecutionContext): Future[T]

    Sends this query and gets a future T (alias for reactivemongo.api.Cursor.head) (using the default reactivemongo.api.ReadPreference).

    Sends this query and gets a future T (alias for reactivemongo.api.Cursor.head) (using the default reactivemongo.api.ReadPreference).

    import scala.concurrent.{ ExecutionContext, Future }
    
    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def findUser(coll: BSONCollection, name: String)(
      implicit ec: ExecutionContext): Future[BSONDocument] =
      coll.find(BSONDocument("user" -> name)).requireOne[BSONDocument]
    T

    the results type

    reader

    the reader for the results type

  51. def returnKey(flag: Boolean = true): Self

    Sets the returnKey flag.

    Sets the returnKey flag.

    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def foo(coll: BSONCollection) = coll.find(BSONDocument.empty).returnKey()
  52. def returnKey: Boolean

    If this flag is true, returns only the index keys in the resulting documents.

    If this flag is true, returns only the index keys in the resulting documents.

    Annotations
    @inline()
  53. def showRecordId(flag: Boolean = true): Self

    Sets the showRecordId flag.

    Sets the showRecordId flag.

    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def foo(coll: BSONCollection) = coll.find(BSONDocument.empty).
      showRecordId()
  54. def showRecordId: Boolean

    The flags to determines whether to return the record identifier for each document.

    The flags to determines whether to return the record identifier for each document.

    Annotations
    @inline()
  55. def singleBatch(flag: Boolean = true): Self

    Sets the singleBatch flag.

    Sets the singleBatch flag.

    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def foo(coll: BSONCollection) = coll.find(BSONDocument.empty).
      singleBatch()
  56. def singleBatch: Boolean

    The flag to determines whether to close the cursor after the first batch (default: false)

    The flag to determines whether to close the cursor after the first batch (default: false)

    Annotations
    @inline()
  57. def skip(n: Int): Self

    Sets the number of documents to skip at the beginning of the results.

    Sets the number of documents to skip at the beginning of the results.

    Definition Classes
    GenericQueryBuilderQueryOps
    See also

    QueryOpts.skipN

  58. def slaveOk: Self

    Toggles SlaveOk: The query is might be run on a secondary.

    Toggles SlaveOk: The query is might be run on a secondary.

    Definition Classes
    GenericQueryBuilderQueryOps
  59. def snapshot(flag: Boolean = true): Self

    Toggles snapshot mode.

    Toggles snapshot mode.

    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def foo(coll: BSONCollection) = coll.find(BSONDocument.empty).snapshot()
  60. def sort(document: P.Document): Self

    Sets the sort specification for the ordering of the results.

    Sets the sort specification for the ordering of the results.

    import scala.concurrent.{ ExecutionContext, Future }
    
    import reactivemongo.api.Cursor
    import reactivemongo.api.bson.BSONDocument
    import reactivemongo.api.bson.collection.BSONCollection
    
    def findSortedVisible(coll: BSONCollection)(
      implicit ec: ExecutionContext): Future[List[BSONDocument]] =
      coll.find(BSONDocument("visible" -> true)).
        sort(BSONDocument("age" -> 1)). // sort per age
        cursor[BSONDocument]().
        collect[List](
          maxDocs = 100,
          err = Cursor.FailOnError[List[BSONDocument]]())
  61. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  62. def tailable: Self

    Toggles TailableCursor: Makes the cursor not to close after all the data is consumed.

    Toggles TailableCursor: Makes the cursor not to close after all the data is consumed.

    Definition Classes
    GenericQueryBuilderQueryOps
  63. def toString(): String
    Definition Classes
    AnyRef → Any
  64. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  65. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  66. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()

Deprecated Value Members

  1. def filter(predicate: P.Document): Self

    Sets the query predicate; If unspecified, then all documents in the collection will match the predicate.

    Sets the query predicate; If unspecified, then all documents in the collection will match the predicate.

    Annotations
    @deprecated
    Deprecated

    (Since version 0.19.4) Specify the filter predicate using collection.find(..)

  2. def filter[Qry](predicate: Qry)(implicit writer: P.Writer[Qry]): Self

    Sets the query predicate; If unspecified, then all documents in the collection will match the predicate.

    Sets the query predicate; If unspecified, then all documents in the collection will match the predicate.

    Qry

    The type of the query. An implicit Writer[Qry] typeclass for handling it has to be in the scope.

    Annotations
    @deprecated
    Deprecated

    (Since version 0.19.4) Specify the filter predicate using collection.find(..)

  3. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated @deprecated
    Deprecated

    (Since version ) see corresponding Javadoc for more information.

  4. def partial: Self

    Toggles Partial: The response can be partial - if a shard is down, no error will be thrown.

    Toggles Partial: The response can be partial - if a shard is down, no error will be thrown.

    Definition Classes
    GenericQueryBuilderQueryOps
    Annotations
    @deprecated
    Deprecated

    (Since version 0.19.8) Use allowPartialResults

  5. def query(selector: P.Document): Self
    Annotations
    @deprecated
    Deprecated

    (Since version 0.18.2) Use filter

  6. def query[Qry](selector: Qry)(implicit writer: P.Writer[Qry]): Self
    Annotations
    @deprecated
    Deprecated

    (Since version 0.18.2) Use filter

  7. def readPreference: ReadPreference

    The default ReadPreference

    The default ReadPreference

    Annotations
    @deprecated @inline()
    Deprecated

    (Since version 0.16.0) Internal: will be made private

  8. def updateOptions(update: (QueryOpts) => QueryOpts): Self
    Annotations
    @deprecated
    Deprecated

    (Since version 0.12.4) Use options or the separate query ops

  9. def [B](y: B): (GenericQueryBuilder[P], B)
    Implicit
    This member is added by an implicit conversion from GenericQueryBuilder[P] toArrowAssoc[GenericQueryBuilder[P]] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc
    Annotations
    @deprecated
    Deprecated

    (Since version 2.13.0) Use -> instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.

Inherited from QueryOps

Inherited from AnyRef

Inherited from Any

Inherited by implicit conversion any2stringadd fromGenericQueryBuilder[P] to any2stringadd[GenericQueryBuilder[P]]

Inherited by implicit conversion StringFormat fromGenericQueryBuilder[P] to StringFormat[GenericQueryBuilder[P]]

Inherited by implicit conversion Ensuring fromGenericQueryBuilder[P] to Ensuring[GenericQueryBuilder[P]]

Inherited by implicit conversion ArrowAssoc fromGenericQueryBuilder[P] to ArrowAssoc[GenericQueryBuilder[P]]

Ungrouped