Как использовать $ в монго-запросе с ReactiveMongo в Play! Framework 2.6?
Я пытаюсь использовать следующий запрос поиска,
{
"uid" : { "$in" : ["value1", "value2"] }
}
Массив ["value1", "value2"] должен быть установлен динамически из Scala Array [String].
Вот мой код,
def find(uids: Array[String]): Future[Seq[User]] = {
val query: JsObject = Json.parse(JsonUtil.toInQuery(uids, "uid")).asInstanceOf[JsObject]
collection.flatMap(_.find(query)
.cursor[User](ReadPreference.primary)
.collect[Seq]()
)
}
Метод JsonUtil.toInQuery(uids, "uid") создает строку json запроса. Я пытался использовать BSONDocument и писать запрос Json вручную вместо передачи строки JSON, но, похоже, это не работает.
Может кто-нибудь предложить мне рабочий способ использовать этот запрос в реактив-монго с Play Framework 2.6?
Обновить
public static String toJsonString(String[] arr){
return Json.toJson(arr).toString();
}
public static String toInQuery(String[] arr, String item){
return "{ \""+item+"\": {\"$in\": "+toJsonString(arr)+"}}";
}
Я получил это работает. Но не уверен, что это правильный подход.