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)
是否可以表达这样的查询? 谢谢     

解决方法

看起来这可能是$ 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\"]}}
很抱歉给您带来麻烦...我已经为此创建了一个错误条目,以更正下一个版本。