MongoDB Casbah查询字段不存在或具体值

时间:2011-04-17 16:02:01

标签: scala mongodb casbah

我想使用casbah执行查询,以便找到所有未设置某个字段的对象(该字段不存在)或该字段具有特定值。

我尝试过使用

val query = ("_id.serviceName" $in serviceNames) ++ ($or("element" $exists false), MongoDBObject("element" -> "value"))) 

但我收到错误:

found com.mongodb.casbah.commons.Imports.DBObject
required (String, Any)

是否可以表达此类查询? 感谢

1 个答案:

答案 0 :(得分:4)

看起来这可能是$或的右侧值过滤器中的错误;它似乎不接受$ exists DSL语句中的预构建DBObject。它绝对应该 - 我在内部提交一个错误来解决这个问题;在此期间,您可以通过手工执行“$ exists”语句来构造它:

scala> val query = ("_id.serviceName" $in serviceNames) ++ ($or(("element" -> MongoDBObject("$exists" -> false)), ("element" -> "value")))            
query: com.mongodb.casbah.commons.Imports.DBObject = { "$or" : [ { "element" : { "$exists" : false}} , { "element" : "value"}] , "_id.serviceName" : { "$in" : [ "foo" , "bar" , "baz" , "bah"]}}

很抱歉...我为此创建了一个bug entry来纠正下一个版本。