来自Controller

时间:2016-04-13 10:59:50

标签: mongodb scala

我是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"]}}

任何人都知道如何做到这一点?

1 个答案:

答案 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(",")))))