#scala #mongodb #casbah
#scala #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)
Возможно ли выразить такой запрос?
Спасибо
Ответ №1:
Похоже, что это может быть ошибкой в фильтре значений справа для $ or; похоже, что он не принимает предварительно сконструированный DBObject из инструкции DSL $ exists. Это определенно должно быть — Я регистрирую ошибку внутри, чтобы исправить это; тем временем вы можете создать это, выполнив оператор «$ 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"]}}
Извините за беспокойство… Я создал запись об ошибке, чтобы исправить это для следующего выпуска.