3

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

我试过使用

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

但我收到一个错误:

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

是否可以表达这样的查询?谢谢

4

1 回答 1

4

看起来这可能是 $or; 右侧值过滤器中的错误;它似乎没有从 $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"]}}

抱歉给您带来麻烦...我为此创建了一个错误条目,以便为下一个版本更正。

于 2011-04-17T16:49:46.027 回答