2015-05-06 3 views
0

Я пытаюсь передать значение множителей в $in с использованием Query DSL с реактивными монгольскими расширениями. Но результатом является пустой список. Follwoing - мой код:

def findUsersByRolesIds(rolesIds: List[BSONObjectID], page: Int, pageSize: Int): Future[List[User]] = { 
    logger.info("findUsersByRolesIds Reactive Repository Method"); 

    userGenericRepo.find($doc("userRoles._id" $in (rolesIds)), $doc("createdOn" -> -1), page, pageSize); 
} 

Когда я пытаюсь выполнить выше код, результат был пуст.

Но когда я проходил, под кодом в результате был возвращен.

def findUsersByRolesIds(rolesIds: List[BSONObjectID], page: Int, pageSize: Int): Future[List[User]] = { 
    logger.info("findUsersByRolesIds Reactive Repository Method"); 

    userGenericRepo.find($doc("userRoles._id" $in (BSONObjectID.apply("5548b098b964e7039852ff58"))), $doc("createdOn" -> -1), page, pageSize); 
} 

Основная проблема заключается в том, что у меня есть несколько значения, так вот почему я создать список, но вот список не работает. Как этот запрос возможен с reactive mongo extenstions и Query DSL.

+0

Попробуйте 'val query = $ doc (...); println (s "query = $ {BDONDocument pretty query}") ', а затем выполнить запрос вручную из CLI MongoDB, чтобы проверить данные. – cchantep

+0

@cchantep Это результат запроса 'query = {" userRoles._id ": {" $ in ": [[{" $ oid ":" 5548b098b964e7039852ff58 "}]]}}'. еще нет возврата данных. –

ответ

2

$ в ожидании varargs, то есть val dsl: BSONDocument = "age" $in (1, 2, 3). Таким образом, вы не можете напрямую передать коллекцию. Попробуйте использовать это "age" $in (rolesIds: _*).

+0

спасибо @fcs. Это действительно помогает мне. Я думаю, что это также необходимо включить в документацию 'Query DSL'. –

+0

@HarmeetSinghTaara Вы не возражаете против отправки PR для этого? – fcs

+0

что такое PR, я не понимаю? –