我需要从查询中跳过许多文档(offset
),并且只返回limit
个后续文档。我知道以下天真的方法:
collection.find(BSONDocument())
.cursor[T].collect[List](offset+limit).map(_.drop(offset))
但它并不是真的需要,因为它会在JVM内存中加载offset+limit
个文档,而我想在“数据库”端过滤它们。
答案 0 :(得分:5)
解决方案:使用QueryOpts
。例如:
collection.find(BSONDocument())
.options(QueryOpts(skipN = offset))
.cursor[T].collect[List](limit)
请注意,使用skip
效率不高,因为mongodb
不支持有效分页,它只会通过遍历所有文档跳过所需的数字。
答案 1 :(得分:1)
collection.find(BSONDocument())
.skip(offset)
.cursor[T]
.collect[List](limit, Cursor.FailOnError[List[T]]())