如何为reactivemongo mongodb驱动程序设置`skip`(offset)?

Vas*_*kov 2 scala mongodb reactivemongo

我需要offset从查询中跳过一些文档(),并且只返回limit后续文档的数量.我知道以下天真的方法:

collection.find(BSONDocument())
  .cursor[T].collect[List](offset+limit).map(_.drop(offset))
Run Code Online (Sandbox Code Playgroud)

但它并不是真正需要的,因为它会offset+limit在JVM内存中加载大量文档,而我想在"数据库"端过滤它们.

Vas*_*kov 5

解决方案:使用QueryOpts.例:

collection.find(BSONDocument())
  .options(QueryOpts(skipN = offset))
  .cursor[T].collect[List](limit)
Run Code Online (Sandbox Code Playgroud)

请注意,使用skip不是非常有效,因为mongodb不支持有效分页,它将通过遍历所有文档跳过所需的数字.