0

我正在尝试使用以下查找查询,

{
   "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 字符串,但它似乎不起作用。

任何人都可以建议我一种工作方式来使用响应式 mongo 中的查询和 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)+"}}";
}

我让它工作了。但是,不确定这是否是正确的方法。

4

0 回答 0