在reactivemongo中,我的查询如下所示:
val result =collName.find(BSONDocument("loc" -> BSONDocument("$near" ->
BSONArray(51,-114)))).cursor[BSONDocument].enumerate()
result.apply(Iteratee.foreach { doc => println(+BSONDocument.pretty(doc))})
我想只打印前2个结果,所以我在枚举中传递maxdocs值,然后查询
val result =collName.find(BSONDocument("loc" -> BSONDocument("$near" ->
BSONArray(51,-114)))).cursor[BSONDocument].enumerate(2)
result.apply(Iteratee.foreach { doc => println(+BSONDocument.pretty(doc))})
但它不是工作,它打印所有查询文件。
如何仅打印前2个结果?
答案 0 :(得分:0)
我基本上偶然发现了同样的事情。
事实证明,ReactiveMongo驱动程序分批传输结果文档,只有在想要加载下一批文档时才考虑maxDocs设置。
您可以将批量大小配置为等于maxDocs限制或其适当的除数:
val result = collName.
find(BSONDocument("loc" -> BSONDocument("$near" -> BSONArray(51,-114)))).
options(QueryOpts(batchSizeN = 2)).
cursor[BSONDocument].enumerate(2)
或者,或者,让MongoDB选择批量大小并使用Enumeratee限制您处理的文档:
val result = collName.
find(BSONDocument("loc" -> BSONDocument("$near" -> BSONArray(51,-114)))).
cursor[BSONDocument].
enumerate(2) &> Enumeratee.take(2)