Fluid Querying with Casbah's DSL
Fluid Querying with Casbah's DSL
Gavin_Zhang 发表于4年前
Fluid Querying with Casbah's DSL
  • 发表于 4年前
  • 阅读 132
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

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
共有 人打赏支持
粉丝 6
博文 10
码字总数 3076
×
Gavin_Zhang
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: