我需要在执行查询时查找文档总数,而不是在 cloudant 中获取文档。
我正在使用 cloudant 客户端 https://github.com/cloudant/java-cloudant 。通常,为了获取文档,我使用“findByIndex()”方法。
现在我的要求是“仅”获取 findByIndex() 第一个参数中指定的选择器可以获取的文档总数。
我不想获取所有文档并在客户端进行计数,因为这会占用所有网络带宽和内存。
从搜索中我确实看到它可以通过这里给出的reduce函数实现: http://guide.couchdb.org/editions/1/en/cookbook.html#aggregate
但是我如何在cloudant的java客户端上使用这个reduce函数呢?还有其他方法可以实现这一目标吗?
最佳答案
查询 View 的文档是https://github.com/cloudant/java-cloudant#query-on-a-view
我快速使用 groovysh(使用 java api)针对 cloudant 教育帐户的animaldb 运行了一个示例。
您可以通过使用浏览器点击以下网址来查看示例查询的原始结果:https://education.cloudant.com/animaldb/_design/views101/_view/diet_count?reduce=true&group=true&key=%22omnivore%22
{"rows":[
{"key":"omnivore","value":3}
]}
groovy 程序(请注意,使用 Grape 的前两行仅用于拉入 cloudant java 库):
groovy:000> import groovy.grape.Grape
groovy:000> Grape.grab(group:'com.cloudant', module:'cloudant-client', version:'1.0.1')
groovy:000> import com.cloudant.client.api.CloudantClient
groovy:000> client = new CloudantClient('education', 'education')
groovy:000> db = client.database('animaldb', false)
groovy:000> omnivores = db.view("views101/diet_count").key('omnivore').queryForInt()
===> 3
下面是等效的 java 代码:
CloudantClient client = new CloudantClient('education', 'education');
Database db = client.database('animaldb', false);
int omnivores = db.view("views101/diet_count").key('omnivore').queryForInt();
关于java - 使用cloudant的java客户端如何获取计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29694183/