FlattenedCursor

reactivemongo.api.FlattenedCursor
class FlattenedCursor[T](val cursor: Future[Cursor[T]]) extends Cursor[T]

Attributes

Graph
Supertypes
trait Cursor[T]
class Object
trait Matchable
class Any

Members list

Concise view

Value members

Concrete methods

final def foldBulks[A](z: => A, maxDocs: Int)(suc: (A, Iterator[T]) => State[A], err: () => A)(implicit ec: ExecutionContext): Future[A]

Applies a binary operator to a start value and all bulks of documents retrieved by this cursor, going first to last.

Applies a binary operator to a start value and all bulks of documents retrieved by this cursor, going first to last.

Attributes

A

the result type of the binary operator

import reactivemongo.api.Cursor
import scala.concurrent.ExecutionContext
case class Person(name: String, age: Int)
def foo(cursor: Cursor[Person])(implicit ec: ExecutionContext) =
 cursor.foldBulks(Nil: Seq[Person])(
   (s, bulk: Iterator[Person]) => Cursor.Cont(s ++ bulk),
   { (l, e) => println("last valid value: " + l); Cursor.Fail(e) })
err

The binary operator to be applied when failing to get the next response. Exception or Fail raised within the suc function cannot be recovered by this error handler.

maxDocs

the maximum number of documents to be retrieved (-1 for unlimited). The actual document count can exceed this, when this maximum devided by the batch size given a non-zero remainder.

suc

The binary operator to be applied when the next response is successfully read.

z

the initial value

final def foldBulksM[A](z: => A, maxDocs: Int)(suc: (A, Iterator[T]) => Future[State[A]], err: () => A)(implicit ec: ExecutionContext): Future[A]

Applies a binary operator to a start value and all bulks of documents retrieved by this cursor, going first to last.

Applies a binary operator to a start value and all bulks of documents retrieved by this cursor, going first to last.

Attributes

A

the result type of the binary operator

import scala.concurrent.{ ExecutionContext, Future }
import reactivemongo.api.Cursor
case class Person(name: String, age: Int)
def foo(cursor: Cursor[Person])(implicit ec: ExecutionContext) =
 cursor.foldBulksM(Nil: Seq[Person])(
   { (s, bulk: Iterator[Person]) =>
    Future.successful(Cursor.Cont(s ++ bulk))
  },
   { (l, e) =>
     println("last valid value: " + l)
     Cursor.Fail[Seq[Person]](e)
   })
err

The binary operator to be applied when failing to get the next response. Exception or Fail raised within the suc function cannot be recovered by this error handler.

maxDocs

the maximum number of documents to be retrieved (-1 for unlimited). The actual document count can exceed this, when this maximum devided by the batch size given a non-zero remainder.

suc

The binary operator to be applied when the next response is successfully read. This must be safe, and any error must be returned as Future.failed[State[A]].

z

the initial value

final def foldWhile[A](z: => A, maxDocs: Int)(suc: (A, T) => State[A], err: () => A)(implicit ec: ExecutionContext): Future[A]

Applies a binary operator to a start value and all elements retrieved by this cursor, going first to last.

Applies a binary operator to a start value and all elements retrieved by this cursor, going first to last.

Attributes

A

the result type of the binary operator

import reactivemongo.api.Cursor
import scala.concurrent.ExecutionContext
case class Person(name: String, age: Int)
def foo(cursor: Cursor[Person])(implicit ec: ExecutionContext) =
 cursor.foldWhile(Nil: Seq[Person])((s, p) => Cursor.Cont(s :+ p),
   { (l, e) => println("last valid value: " + l); Cursor.Fail(e) })
err

The binary operator to be applied when failing to get the next response. Exception or Fail raised within the suc function cannot be recovered by this error handler.

maxDocs

the maximum number of documents to be retrieved (-1 for unlimited).

suc

The binary operator to be applied when the next document is successfully read.

z

the initial value

final def foldWhileM[A](z: => A, maxDocs: Int)(suc: (A, T) => Future[State[A]], err: () => A)(implicit ec: ExecutionContext): Future[A]

Applies a binary operator to a start value and all elements retrieved by this cursor, going first to last.

Applies a binary operator to a start value and all elements retrieved by this cursor, going first to last.

Attributes

A

the result type of the binary operator

import scala.concurrent.{ ExecutionContext, Future }
import reactivemongo.api.Cursor
case class Person(name: String, age: Int)
def foo(cursor: Cursor[Person])(implicit ec: ExecutionContext) =
 cursor.foldWhileM(Nil: Seq[Person])(
   (s, p) => Future.successful(Cursor.Cont(s :+ p)),
   { (l, e) =>
     println("last valid value: " + l)
     Cursor.Fail[Seq[Person]](e)
   })
err

The binary operator to be applied when failing to get the next response. Exception or Fail raised within the suc function cannot be recovered by this error handler.

maxDocs

the maximum number of documents to be retrieved (-1 for unlimited).

suc

The binary operator to be applied when the next document is successfully read. This must be safe, and any error must be returned as Future.failed[State[A]].

z

the initial value

final def head(implicit ec: ExecutionContext): Future[T]

Returns the first document matching the query, or fails with Cursor.NoSuchResultException if none.

Returns the first document matching the query, or fails with Cursor.NoSuchResultException if none.

import scala.concurrent.{ ExecutionContext, Future }

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

def first(query: BSONDocument)(collection: BSONCollection)(
 implicit ec: ExecutionContext): Future[BSONDocument] = {
 val cursor = collection.find(query).cursor[BSONDocument]()
 // return option of the first element.
 cursor.head
}

Attributes

final override def headOption(implicit ec: ExecutionContext): Future[Option[T]]

Returns the first document matching the query, if any.

Returns the first document matching the query, if any.

import scala.concurrent.{ ExecutionContext, Future }

import reactivemongo.api.bson.BSONDocument

import reactivemongo.api.bson.collection.BSONCollection

def maybeFirst(query: BSONDocument)(collection: BSONCollection)(
 implicit ec: ExecutionContext): Future[Option[BSONDocument]] = {
 val cursor = collection.find(query).cursor[BSONDocument]()
 // return option of the first element.
 cursor.headOption
}

Attributes

Definition Classes

Inherited methods

def collect[M[_]](maxDocs: Int, err: () => M[T])(implicit cbf: Factory[T, M[T]], ec: ExecutionContext): Future[M[T]]

Attributes

Inherited from:
FlattenedCursorCompat (hidden)
def fold[A](z: => A, maxDocs: Int)(suc: (A, T) => A)(implicit ec: ExecutionContext): Future[A]

Applies a binary operator to a start value and all elements retrieved by this cursor, going first to last.

Applies a binary operator to a start value and all elements retrieved by this cursor, going first to last.

Attributes

A

the result type of the binary operator

import scala.concurrent.ExecutionContext
import reactivemongo.api.Cursor
case class Person(name: String, age: Int)
def foo(cursor: Cursor[Person])(implicit ec: ExecutionContext) =
 cursor.foldWhile(Nil: Seq[Person])((s, p) => Cursor.Cont(s :+ p),
   { (l, e) => println("last valid value: " + l); Cursor.Fail(e) })
err

The binary operator to be applied when failing to get the next response. Exception or Fail raised within the suc function cannot be recovered by this error handler.

maxDocs

the maximum number of documents to be retrieved (-1 for unlimited).

suc

The binary operator to be applied when the next document is successfully read.

z

the initial value

Inherited from:
Cursor
def peek[M[_]](maxDocs: Int)(implicit cbf: Factory[T, M[T]], ec: ExecutionContext): Future[Result[M[T]]]

Attributes

Inherited from:
FlattenedCursorCompat (hidden)