Я изучаю Scala и тоже пробую Mongo. Я создаю функцию, которая получает Map[String, Any]
в качестве параметра, и я хотел бы вернуть для нее правильный MongoDBObject
:
def parse(query: Map[String, Any]): MongoDBObject = {
val result = query("operation") match {
case "all" => query("field").toString $all query("value").asInstanceOf[List[String]]
case "in" => query("field").toString $in query("value").asInstanceOf[List[String]]
case "regex" => query("field").toString $regex query("value")
case "eq" => query("field").toString $eq query("value")
case "gt" => query("field").toString $gt query("value")
case "gte" => query("field").toString $gte query("value")
case "lt" => query("field").toString $lt query("value")
case "lte" => query("field").toString $lte query("value")
case "exists" => query("field").toString $exists query("value").asInstanceOf[Boolean]
case "size" => query("field").toString $size query("value").asInstanceOf[Int]
case "where" => $where(query("value").toString)
case _ => throw new NotImplementedError("Unknown operation")
}
}
У меня есть некоторые проблемы.
- компилятор говорит, что
$regex
не является членомString
. Я не знаю почему. - компилятор говорит, что
Any
не является допустимым параметром запроса. Я полагаю, что я должен привести к типу int, string, date или любому другому допустимому типу Mongo. Есть ли способ исправить это без размышлений, чтобы решить, какой тип имеет значение? - для операции
$mod
я должен указать два числовых значения в качестве параметров. Должен ли я использоватьList
в качестве значения для карты и получить первый и второй элементы?