Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 来自控制器的Scala接收列表[字符串]_Mongodb_Scala - Fatal编程技术网

Mongodb 来自控制器的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

我不熟悉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"]}}
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的路由器值