我是Scala和MongDB的新手,我想从一个与特定ID相匹配的集合中获取记录(在C#或java中,这是一件非常容易的事情)。但在Mongo + Scala我无法让它发挥作用。我的职责是:
getBooksFlow(bookId: String, booknodes:List[String]): Future[List[bookResponseModel]]
= {
val mainDB = connection.db(bookId)
val bookscollection = mainDB.collection[JSONCollection](booksCollectionString)
val query = Json.obj("_id" -> Json.obj("$in"->Json.toJson(booknodes)))
var futurebooks = bookscollection.find(query).cursor[bookResponseModel]().collect[List]()
}
这是打印时查询的外观:
{"_id":{"$in":["0a416b7d-c3a8-329b-93b9-a7296e2d58d9,817e8aa6-7c60-36a3-9213-9bfcf954e541"]}}
但我希望它像这样:
{"_id":{"$in":["0a416b7d-c3a8-329b-93b9-a7296e2d58d9","817e8aa6-7c60-36a3-9213-9bfcf954e541"]}}
任何人都知道如何做到这一点?
答案 0 :(得分:0)
您的booknodes:List[String]
似乎是一个只包含一个项目的字符串列表:
List("0a416b7d-c3a8-329b-93b9-a7296e2d58d9,817e8aa6-7c60-36a3-9213-9bfcf954e541")
也许,在逗号上拆分booknodes
以获取这些对象ID的列表。因此,您的查询可能如下所示:
Json.obj("_id" -> Json.obj("$in"->Json.toJson(booknodes.flatMap(_.split(",")))))