【问题标题】:How to obtain count while using java client of cloudant?使用cloudant的java客户端时如何获取count?
【发布时间】:2015-04-17 08:34:29
【问题描述】:

我需要在执行查询时查找文档总数,而不是在 cloudant 中获取它们。

我正在使用 cloudant 客户端 https://github.com/cloudant/java-cloudant 。通常我使用“findByIndex()”方法来获取文档。

现在我的要求是“仅”获取 findByIndex() 的第一个参数中指定的选择器可以获取的文档总数。

我不想获取所有文档并在客户端计算它们,因为这会占用所有网络带宽和内存。

从搜索中,我确实通过这里给出的 reduce 函数看到了它的可能: http://guide.couchdb.org/editions/1/en/cookbook.html#aggregate

但是如何在 Cloudant 的 java 客户端上使用这个 reduce 函数呢?还有其他方法可以实现吗?

【问题讨论】:

    标签: java mapreduce couchdb cloudant nosql-aggregation


    【解决方案1】:

    查询视图的文档是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();
    

    【讨论】:

    • 这并没有真正帮助...我有一个基于正则表达式的选择器。我需要选择器返回的结果计数。有什么想法吗?
    【解决方案2】:

    findByIndex 函数使用 Cloudant 查询索引。此索引类型目前不支持返回结果总数。

    链接http://guide.couchdb.org/editions/1/en/cookbook.html#aggregate 指的是视图,这是 Cloudant 上的一种不同类型的索引。仅减少视图而不是查询索引中的工作。正如 Chris Snow 建议的那样,您需要使用视图来通过 reduce 有效地获取总数。

    不幸的是,您不能在视图中使用正则表达式(您提到您的 Cloudant 查询选择器使用)。但是,也许您可​​以在视图的 map 函数中创建一个键,以便执行相同的查询。

    【讨论】:

      猜你喜欢
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 2015-01-29
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      相关资源
      最近更新 更多