如何在 reactivemongo 中只打印 2 个结果
How to print only 2 result in reactivemongo
在 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 个结果?
我基本上是被同样的事情绊倒了。
事实证明,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)
在 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 个结果?
我基本上是被同样的事情绊倒了。
事实证明,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)