Cursor over results from MongoDB.
import scala.concurrent.{ ExecutionContext, Future }
import reactivemongo.api.Cursor
import reactivemongo.api.bson.{ BSONDocument, BSONDocumentReader, Macros }
import reactivemongo.api.bson.collection.BSONCollection
case class User(name: String, pass: String)
implicit val reader: BSONDocumentReader[User] = Macros.reader[User]
def findUsers(coll: BSONCollection)(
implicit ec: ExecutionContext): Future[List[User]] =
coll.find(BSONDocument("enabled" -> true)).
cursor[User](). // obtain cursor for User results
collect[List](
maxDocs = 10,
err = Cursor.FailOnError[List[User]]())
Attributes
- T
the type parsed from each result document
- Companion:
- object
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
- Known subtypes
- class FlattenedCursor[T]trait WrappedCursor[T]
Members list
Value members
Abstract methods
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
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
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
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
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
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
Concrete methods
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 methods
Collects all the documents into a collection of type M[T]
.
Collects all the documents into a collection of type M[T]
.
Attributes
- 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. (default: Cursor.FailOnError)import scala.concurrent.ExecutionContext import reactivemongo.api.Cursor import reactivemongo.api.bson.BSONDocument import reactivemongo.api.bson.collection.BSONCollection def foo(collection: BSONCollection, query: BSONDocument)( implicit ec: ExecutionContext) = { val cursor = collection.find(query).cursor[BSONDocument]() // return the 3 first documents in a Vector[BSONDocument]. cursor.collect[Vector](3, Cursor.FailOnError[Vector[BSONDocument]]()) }
- maxDocs
the maximum number of documents to be retrieved (-1 for unlimited).
- Inherited from:
- CursorCompatAPI (hidden)