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

これは、$または;の右側の値フィルターのバグである可能性があります。$existsDSLステートメントから事前に構築された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 に答える