Как использовать $ в монго-запросе с 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)+"}}";
}

Я получил это работает. Но не уверен, что это правильный подход.

0 ответов