<http://10gen.com>
package com.mongodb.async
import org.bson.util.Logging
import com.mongodb.async.futures._
import org.bson._
import org.bson.collection._
object Collection extends Logging {
}
class Collection(val name: String)(implicit val db: DB) extends Logging {
TODO
TODO
def command[Cmd <% BSONDocument](cmd: Cmd)(f: SingleDocQueryRequestFuture) {
db.command(cmd)(f)
}
def command(cmd: String): SingleDocQueryRequestFuture => Unit =
command(Document(cmd -> 1))_
TODO
TODO
TODO
TODO
TODO
TODO
TODO
TODO
TODO
TODO
TODO
TODO
<- 1 to 5000) println("TODO - SCALADOC")
*/
def find[Qry <: BSONDocument, Flds <: BSONDocument](query: Qry = Document.empty, fields: Flds = Document.empty, numToSkip: Int = 0, batchSize: Int = 0)(callback: CursorQueryRequestFuture)(implicit concern: WriteConcern = this.writeConcern) {
db.find(name)(query, fields, numToSkip, batchSize)(callback)
}
def findOne[Qry <: BSONDocument, Flds <: BSONDocument](query: Qry = Document.empty, fields: Flds = Document.empty)(callback: SingleDocQueryRequestFuture)(implicit concern: WriteConcern = this.writeConcern) {
db.findOne(name)(query, fields)(callback)
}
def findOneByID[Id <: AnyRef, Flds <: BSONDocument](id: Id, fields: Flds = Document.empty)(callback: SingleDocQueryRequestFuture)(implicit concern: WriteConcern = this.writeConcern) {
db.findOneByID(name)(id, fields)(callback)
}
def insert[T](doc: T, validate: Boolean = true)(callback: WriteRequestFuture)(implicit concern: WriteConcern = this.writeConcern, m: SerializableBSONObject[T]) {
db.insert(name)(doc, validate)(callback)
}
def batchInsert[T](docs: T*)(callback: WriteRequestFuture)(implicit concern: WriteConcern = this.writeConcern, m: SerializableBSONObject[T]) {
db.batchInsert(name)(docs: _*)(callback)
}
def update[Upd](query: BSONDocument, update: Upd, upsert: Boolean = false, multi: Boolean = false)(callback: WriteRequestFuture)(implicit concern: WriteConcern = this.writeConcern, uM: SerializableBSONObject[Upd]) {
db.update(name)(query, update, upsert, multi)(callback)
}
def save[T](obj: T)(callback: WriteRequestFuture)(implicit concern: WriteConcern = this.writeConcern, m: SerializableBSONObject[T]) {
db.save(name)(obj)(callback)
}
def remove[T](obj: T, removeSingle: Boolean = false)(callback: WriteRequestFuture)(implicit concern: WriteConcern = this.writeConcern, m: SerializableBSONObject[T]) {
db.remove(name)(obj, removeSingle)(callback)
}
def createIndex[Kys <% BSONDocument, Opts <% BSONDocument](keys: Kys, options: Opts = Document.empty)(callback: WriteRequestFuture) {
db.createIndex(name)(keys, options)(callback)
}
def createUniqueIndex[Idx <% BSONDocument](keys: Idx)(callback: WriteRequestFuture) {
db.createUniqueIndex(name)(keys)(callback)
}
def dropAllIndexes()(callback: (Boolean) => Unit) {
db.dropAllIndexes(name)(callback)
}
def dropIndex(idxName: String)(callback: (Boolean) => Unit) {
db.dropIndex(name)(idxName)(callback)
}
TODO
def dropCollection()(callback: (Boolean) => Unit) {
TODO
command(Document("drop" -> name))(boolCmdResultCallback(callback))
}
def count[Qry: SerializableBSONObject, Flds: SerializableBSONObject](query: Qry = Document.empty,
fields: Flds = Document.empty,
limit: Long = 0,
skip: Long = 0)(callback: Int => Unit) =
db.count(name)(query, fields, limit, skip)(callback)
TODO
TODO
TODO
TODO
@param
@return
def findAndRemove[Qry: SerializableBSONObject](query: Qry = Document.empty)(callback: FindAndModifyRequestFuture) = db.findAndRemove(name)(query)(callback)
@param
@param
@param
@param
@param
@param
@param
@return
def findAndModify[Qry: SerializableBSONObject, Srt: SerializableBSONObject, Upd: SerializableBSONObject, Flds: SerializableBSONObject](
query: Qry = Document.empty,
sort: Srt = Document.empty,
remove: Boolean = false,
update: Option[Upd] = Option[Document](null),
getNew: Boolean = false,
fields: Flds = Document.empty,
upsert: Boolean = false)(callback: FindAndModifyRequestFuture) =
db.findAndModify(name)(query, sort, remove, update, getNew, fields, upsert)(callback)
def distinct[Qry: SerializableBSONObject](key: String, query: Qry = Document.empty)(callback: Seq[Any] => Unit) {
command(OrderedDocument("distinct" -> name, "key" -> key, "query" -> query))(SimpleRequestFutures.findOne((doc: Document) => callback(doc.getAsOrElse[BSONList]("values", BSONList.empty).asList)))
}
protected[mongodb] var _writeConcern: Option[WriteConcern] = None
{@link WriteConcern}
@param
@see
@see
def writeConcern_=(concern: WriteConcern) = _writeConcern = Some(concern)
{@link WriteConcern}
@see
@see
def writeConcern = _writeConcern.getOrElse(db.writeConcern)
def ns = "%s.%s".format(db.name, name)
}