通过Casbah的正则表达式找到

时间:2011-02-03 15:07:42

标签: scala mongodb casbah mongodb-scala

如何在Collection#find(/* HERE */)使用正则表达式,如:

val coll = MongoConnection()("foo")("bar")
for(x <- coll.find("name" -> ".*son$".r)) {
   // some operations...
}

2 个答案:

答案 0 :(得分:14)

你很近,你只需要将你的条件包裹在MongoDBObject()

我们不得不在一堆地方取出<key> -> <value>的隐式转换,因为它们很难正确捕获并且破坏了其他代码。

他们可能会回到2.1。

请改为:

val coll = MongoConnection()("foo")("bar")
for(x <- coll.find(MongoDBObject("name" -> ".*son$".r))) {
   // some operations...
}

答案 1 :(得分:1)

对于在上述答案中添加IGNORECASE,在Casbah Scala的正则表达式末尾添加“ / i”将不起作用。 为此,请使用:

val EmailPattern = Pattern.compile(companyName,Pattern.CASE_INSENSITIVE)
val q = MongoDBObject("companyName" ->  EmailPattern)
val result = MongoFactory.COLLECTION_NAME.findOne(q)