Поле запроса MongoDB Casbah не существует или конкретное значение - PullRequest
3 голосов
/ 17 апреля 2011

Я хотел бы выполнить запрос с использованием 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 Ответ

4 голосов
/ 17 апреля 2011

Похоже, что это может быть ошибка в правом фильтре значений для $ или; похоже, он не принимает предварительно сконструированный объект DBObject из оператора DSL $ существующие. Это определенно должно --- Я фиксирую ошибку внутри, чтобы исправить это; тем временем вы можете сконструировать это, выполнив вручную оператор "$ exist":

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"]}}

Извините за беспокойство ... Я создал запись ошибки , чтобы исправить это в следующем выпуске.

...