IndexesManager

reactivemongo.api.indexes.IndexesManager
See theIndexesManager companion object
sealed trait IndexesManager

Indexes manager at database level.

Attributes

Companion:
object
Graph
Supertypes
class Object
trait Matchable
class Any

Members list

Concise view

Type members

Types

final type NSIndex = Aux[Pack]

Value members

Abstract methods

Creates the given index.

Creates the given index.

import scala.concurrent.{ ExecutionContext, Future }

import reactivemongo.api.DB
import reactivemongo.api.indexes.NSIndex

def createIndexes(
 db: DB, is: Seq[NSIndex.Default])(
 implicit ec: ExecutionContext): Future[Unit] =
 Future.sequence(
   is.map(idx => db.indexesManager.create(idx))).map(_ => {})

Warning: given the options you choose, and the data to index, it can be a long and blocking operation on the database. You should really consider reading http://www.mongodb.org/display/DOCS/Indexes before doing this, especially in production.

Attributes

nsIndex

the index to create

def drop(collectionName: String, indexName: String): Future[Int]

Drops the specified index on the given collection.

Drops the specified index on the given collection.

import scala.concurrent.{ ExecutionContext, Future }
import reactivemongo.api.DB

def dropIndex(db: DB, name: String)(
 implicit ec: ExecutionContext): Future[Int] =
 db.indexesManager.drop("myColl", name)

Attributes

collectionName

the collection name

indexName

the name of the index to be dropped

Returns:

The number of indexes that were dropped.

def dropAll(collectionName: String): Future[Int]

Drops all the indexes on the specified collection.

Drops all the indexes on the specified collection.

import scala.concurrent.{ ExecutionContext, Future }
import reactivemongo.api.DB

def dropAllIndexes(db: DB)(
 implicit ec: ExecutionContext): Future[Int] =
 db.indexesManager.dropAll("myColl")

Attributes

collectionName

the collection name

Returns:

The number of indexes that were dropped.

def ensure(nsIndex: NSIndex): Future[Boolean]

Creates the given index only if it does not exist on this database.

Creates the given index only if it does not exist on this database.

The following rules are used to check the matching index:

  • if nsIndex.isDefined, it checks using the index name,
  • otherwise it checks using the key.
import scala.concurrent.{ ExecutionContext, Future }

import reactivemongo.api.DB
import reactivemongo.api.indexes.NSIndex

def ensureIndexes(
 db: DB, is: Seq[NSIndex.Default])(
 implicit ec: ExecutionContext): Future[Unit] =
 Future.sequence(
   is.map(idx => db.indexesManager.ensure(idx))).map(_ => {})

Warning: given the options you choose, and the data to index, it can be a long and blocking operation on the database. You should really consider reading http://www.mongodb.org/display/DOCS/Indexes before doing this, especially in production.

Attributes

nsIndex

the index to create

Returns:

true if the index was created, false if it already exists.

Lists all the index on this database.

Lists all the index on this database.

import scala.concurrent.{ ExecutionContext, Future }

import reactivemongo.api.DB
import reactivemongo.api.indexes.NSIndex

def listIndexes(db: DB)(
 implicit ec: ExecutionContext): Future[List[String]] =
 db.indexesManager.list().map(_.flatMap { (ni: NSIndex) =>
   ni.index.name.toList
 })

Attributes

def onCollection(collectionName: String): Aux[Pack]

Returns a manager for the specified collection.

Returns a manager for the specified collection.

import scala.concurrent.{ ExecutionContext, Future }
import reactivemongo.api.DB

def countCollIndexes(db: DB, collName: String)(
 implicit ec: ExecutionContext): Future[Int] =
 db.indexesManager.onCollection(collName).list().map(_.size)

Attributes

collectionName

the collection name

Concrete methods

def drop(nsIndex: NSIndex): Future[Int]

Drops the specified index.

Drops the specified index.

import scala.concurrent.{ ExecutionContext, Future }

import reactivemongo.api.DB
import reactivemongo.api.indexes.NSIndex

def dropIndex(db: DB, idx: NSIndex.Default)(
 implicit ec: ExecutionContext): Future[Int] =
 db.indexesManager.drop(idx)

Attributes

Returns:

The number of indexes that were dropped.