Fluid Querying with Casbah's DSL

Casbah 通过使用MongoDB查询运算符来创建MongoDBObject,提供了更丰富的查询手段。但不得不说地是,文档的确做不好。要想知道那些运算符可以使用,直接看Casbah的jar包可能还能方便点:

com.mongodb.casbah.query.dsl

 

在使用中需要特别说明的,和以前使用sql一个不一样的地方。比如SQL查询“select name from people where age >18 and age <60”相应的DSL是 (“age”$ge 18 $le 60)。而不能在构造DBObject时写成:

val q = (“age”$ge 18)++ (“age”$le 60)

这时q为{“age”: $le: {60}}。age>18的指定就会被覆盖掉。它和SQL的条件语句是不一样的。

MongoDBObject是一个类Map的数据结构。

Cashbash $or 的用法例子:

  def byPeriod(startDate: DateTime, endDate: DateTime) = {
    val or = MongoDBObject("$or" -> MongoDBList("StartDate" $gte startDate $lte endDate, "FinishDate" $gte startDate $lte endDate))
    val q: MongoDBObject = or ++
      ("ResourceName" $in (devs))

    for (rawtask <- mongoCollection.find(q).toList) yield new Task(rawtask)
  }

{OutlineNum: /^1..$/} 在Cashbash是:MongoDBObject("OutlineNum" -> "^1..$".r)

【参考】

Fluid Querying with Casbah's DSL   — Casbah (MongoDB + Scala Toolkit) Documentation 2.6.1 documentation  http://t.cn/zHbhUpx

SQL to MongoDB Mapping Chart — MongoDB Manual 2.4.3 http://t.cn/zj3n42K

你可能感兴趣的:(mongodb,scala,casbah)