2011-04-17 76 views
2

我想使用casbah执行查询以查找所有没有设置特定字段(该字段不存在)或该字段具有特定值的对象。MongoDB 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

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

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纠正下一个版本。

+0

非常感谢!不要担心,并感谢您的非常好的工作! – Matroska 2011-04-17 17:33:41

相关问题