ReactiveMongo 查询无法分页
ReactiveMongo query failing to paginate
让 ReactiveMongo 0.11
对我的查询进行分页时遇到一些问题。行为是返回 all 结果,而不是逐页结果。
这是我的查询:
def listConvos(userId: String, page: Int, pageSize: Int) = {
val query = BSONDocument("userId" -> userId)
val sort = BSONDocument("lastActivity" -> -1)
val skipN = (page-1) * pageSize
val queryOptions = new QueryOpts(skipN = skipN, batchSizeN = pageSize, flagsN = 0)
collection.find(query).options(queryOptions).sort(sort).cursor[ConvoDesc](ReadPreference.primaryPreferred).collect[List]()
请注意,分页从 1
开始。使用 IntelliJ 调试器,上述变量的值为:
userId = "29aosidfj43903p"
query = BSONDocument(<non-empty>)
sort = BSONDocument(<non-empty>)
queryOptions = QueryOpts(10,10,0)
page = 2
pageSize = 10
我还可以确认我已经在 userId
和 lastActivity
字段上设置了复合索引。感谢您的帮助!
解决方案是在 collect
方法中也包括页面大小,如下所示:
collection.find(query).options(queryOptions).sort(sort).cursor[ConvoDesc](ReadPreference.primaryPreferred).collect[List](pageSize)
让 ReactiveMongo 0.11
对我的查询进行分页时遇到一些问题。行为是返回 all 结果,而不是逐页结果。
这是我的查询:
def listConvos(userId: String, page: Int, pageSize: Int) = {
val query = BSONDocument("userId" -> userId)
val sort = BSONDocument("lastActivity" -> -1)
val skipN = (page-1) * pageSize
val queryOptions = new QueryOpts(skipN = skipN, batchSizeN = pageSize, flagsN = 0)
collection.find(query).options(queryOptions).sort(sort).cursor[ConvoDesc](ReadPreference.primaryPreferred).collect[List]()
请注意,分页从 1
开始。使用 IntelliJ 调试器,上述变量的值为:
userId = "29aosidfj43903p"
query = BSONDocument(<non-empty>)
sort = BSONDocument(<non-empty>)
queryOptions = QueryOpts(10,10,0)
page = 2
pageSize = 10
我还可以确认我已经在 userId
和 lastActivity
字段上设置了复合索引。感谢您的帮助!
解决方案是在 collect
方法中也包括页面大小,如下所示:
collection.find(query).options(queryOptions).sort(sort).cursor[ConvoDesc](ReadPreference.primaryPreferred).collect[List](pageSize)