Поле запроса MongoDB Casbah не существует или определенное значение

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

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