2016-04-13 4 views
2

Я новичок в Scala и MongDB, и мне бы хотелось получить записи из коллекции, которая соответствует определенному идентификатору (в C# или java это довольно простая задача). Но в Mongo + Scala я не могу заставить его работать. Моя функция:Scala Receiving List [String] from Controller

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

Оказывается ваш booknodes:List[String] список строки, содержащей только один элемент:

List("0a416b7d-c3a8-329b-93b9-a7296e2d58d9,817e8aa6-7c60-36a3-9213-9bfcf954e541") 

Возможно, разделить booknodes на запятых, чтобы получить список этих идентификаторов объектов. Таким образом, ваш запрос может выглядеть следующим образом:

Json.obj("_id" -> Json.obj("$in"->Json.toJson(booknodes.flatMap(_.split(","))))) 
+0

Роберт Уды его работает нормально, но если мои данные содержат (,), который проваливает ситуацию, что мой вопрос был, почему контроллер receving данные, как этот список ("0a416b7d-c3a8- 329b-93b9-a7296e2d58d9,817e8aa6-7c60-36a3-9213-9bfcf954e541 ") – kittu

+0

Независимо от того, какие вызовы' getBooksFlow() 'подскажут вам, почему в вашем списке booknodes есть строка с запятыми. Не возражаете ли вы размещать бит кода, где назначается значение «booknodes»? –

+0

Robert Udah window.location = "/[email protected]& booknodes =" + books iam, вызывающий метод управления с ui-страницы напрямую (я думал, что это ошибка), альтернатива, проходящая через форму, но я вызываю использование окна. location – kittu

Смежные вопросы