case classProperty(name: String) extends Product with Serializable
Extractor for BSON property,
allowing partial and un-ordered match by name.
Rich match syntax ~(Property(name), ...) requires use of
http://acolyte.eu.org/scalac-plugin.html
import reactivemongo.bson.{ BSONInteger, BSONString }
import acolyte.reactivemongo.{ RequestBody, Property, & }
val EmailXtr = Property("email") // Without scalac plugin
request match {
case RequestBody("db.col", ~(Property("email"), BSONString(e))) =>// Request on db.col with an "email" string property,// anywhere in properties (possibly with others which are ignored there),// with `e` bound to extracted string value.
resultA
case RequestBody("db.col", EmailXtr(BSONString(e))) =>// Request on db.col with an "email" string property,// anywhere in properties (possibly with others which are ignored there),// with `e` bound to extracted string value.
resultB // similar to case resultA without scalac plugincase RequestBody("db.col", ~(Property("name"), BSONString("eman"))) =>// Request on db.col with an "name" string property with "eman" as value,// anywhere in properties (possibly with others which are ignored there).
resultC
case RequestBody(colName,
~(Property("age"), BSONInteger(age)) &
~(Property("email"), BSONString(v))) =>// Request on any collection, with an "age" integer property// and an "email" string property, possibly not in this order.
resultD
case RequestBody(colName,
~(Property("age"), ValueDocument(
~(Property("$gt"), BSONInteger(minAge)))) &
~(Property("email"), BSONString("[email protected]"))) =>// Request on any collection, with an "age" property with itself// a operator property "$gt" having an integer value, and an "email"// property (at the same level as age), without order constraint.
resultE
}
See also
ValueDocument
&
Linear Supertypes
Serializable, Serializable, Product, Equals, AnyRef, Any
Extractor for BSON property, allowing partial and un-ordered match by name. Rich match syntax
~(Property(name), ...)
requires use of http://acolyte.eu.org/scalac-plugin.htmlValueDocument
&