Mongodb 来自控制器的Scala接收列表[字符串]
我不熟悉Scala和MongDB,我希望从一个集合中获取与特定ID匹配的记录(在C#或java中,这是一件非常容易的事情)。但在Mongo+Scala中,我无法让它工作。我的职能是:Mongodb 来自控制器的Scala接收列表[字符串],mongodb,scala,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 = ma
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"]}}
Json.obj("_id" -> Json.obj("$in"->Json.toJson(booknodes.flatMap(_.split(",")))))
有人知道怎么做吗?看来您的
booknodes:List[String]
是一个只包含一项的字符串列表:
List("0a416b7d-c3a8-329b-93b9-a7296e2d58d9,817e8aa6-7c60-36a3-9213-9bfcf954e541")
也许可以在逗号处拆分booknodes
,以获得这些对象ID的列表。因此,您的查询可能如下所示:
{"_id":{"$in":["0a416b7d-c3a8-329b-93b9-a7296e2d58d9","817e8aa6-7c60-36a3-9213-9bfcf954e541"]}}
Json.obj("_id" -> Json.obj("$in"->Json.toJson(booknodes.flatMap(_.split(",")))))
Robert Udah其工作正常,但如果我的数据包含(,)而无法满足这种情况,那么我的问题是为什么控制器会像列表一样接收数据(“0a416b7d-c3a8-329b-93b9-A7296E2D58D9817E8AA6-7c60-36a3-9213-9bfcf954e541”),无论调用什么将为您提供一条线索,说明为什么
booknodes
列表中有一个带逗号的字符串。你介意在booknodes
赋值的地方发布代码位吗?Robert Udah window.location=“/getBooksFlow?bookId=@bookInfo.Id&booknodes=“+books我直接从ui页面调用控制方法(我认为这是错误的)另一种方法是通过表单传递,但我使用window.location调用了。我不确定URL值是如何转换的。如果您正在使用Play!,包括该URL的路由器值