我正在尝试使用以下查找查询,
{
"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)+"}}";
}
我让它工作了。但是,不确定这是否是正确的方法。