Skip to content

Latest commit

 

History

History
90 lines (70 loc) · 1.76 KB

bsondao.md

File metadata and controls

90 lines (70 loc) · 1.76 KB

BsonDao

Usage

BsonDao operates on reactivemongo.api.collections.default.BSONCollection. You will need to define a DAO for each of your models(case classes).

Below is a sample model.

case class Person(
  _id: BSONObjectID = BSONObjectID.generate,
  name: String,
  surname: String,
  age: Int)

Now let's define a BsonDao for this model.

object PersonDao extends BsonDao[Person] {
  def db: DB = ???
  val collectionName: String = "persons"
}

db and collectionName are the only required members of BsonDao.

API

findOne

def findOne(selector: BSONDocument): Future[Option[T]]

findById

def findById(id: BSONValue): Future[Option[T]]

insert

def insert(document: T): Future[LastError]
def insert(documents: TraversableOnce[T]): Future[Int]

updateById

def updateById(id: BSONValue,
               update: BSONDocument,
               writeConcern: GetLastError = GetLastError(),
               upsert: Boolean = false,
               multi: Boolean = false): Future[LastError]

save

def save(document: T, writeConcern: GetLastError = GetLastError())

count

def count(selector: BSONDocument = BSONDocument.empty): Future[Int]

foreach

def foreach(selector: BSONDocument = BSONDocument.empty,
            sort: BSONDocument = BSONDocument(idField -> 1))(f: (T) => Unit): Future[Unit]

fold

def fold[A](selector: BSONDocument = BSONDocument.empty,
            sort: BSONDocument = BSONDocument(idField -> 1),
            state: A)(f: (A, T) => A): Future[A]

drop

def drop(): Future[Boolean]

dropSync

def dropSync(timeout: Duration = 10 seconds): Boolean