java - reduce() 不适用于 lightcouch

标签 java mapreduce couchdb


我编写了一个管理电视剧的程序,但我遇到了 lightcouch 和特定数据库查询的问题。这是我到目前为止所拥有的。为了设置数据库 View ,我使用了以下几行:

MapReduce get_numberOfSeasonsMR = new MapReduce();
get_numberOfSeasonsMR.setMap(
  "function(doc) { "
   + "  emit(doc.seriesName, doc.season)"
   + "}");
get_numberOfSeasonsMR.setReduce(
  "function (key, values, rereduce) {"
    + "return Math.max.apply({}, values)"
    + "}");

map.put("get_numberOfSeasons", get_numberOfSeasonsMR);

在 Futon 中,一切看起来都很正常(参见 http://i.stack.imgur.com/1hgSJ.png)。

但是,当我尝试执行以下行时,我得到了一个异常,而不是出现在 Futon 中的结果。

int nr = client.view("design/get_numberOfSeasons").key("Arrow").queryForInt();

异常(exception):

org.lightcouch.NoDocumentException: Expecting exactly a single result of this view query, but was: 0
org.lightcouch.View.queryValue(View.java:246)
org.lightcouch.View.queryForInt(View.java:219)
....db.Server.getNumberOfSeasons(Server.java:237)
...

我试图在我的 map() 函数中而不是整数上发出字符串,但它没有任何区别。我究竟做错了什么?或者有人可以发布成功的 lightcouch map()+reduce() 操作示例吗?我发现的教程只使用了 map() 而没有使用 reduce()。

提前致谢;)

最佳答案

您的代码似乎没有问题,这是完整版本:

CouchDbClient dbClient = new CouchDbClient();

DesignDocument designDocument = new DesignDocument();
designDocument.setId("_design/mydesign");
designDocument.setLanguage("javascript");

MapReduce get_numberOfSeasonsMR = new MapReduce();
get_numberOfSeasonsMR.setMap(
  "function(doc) { "
   + "  emit(doc.seriesName, doc.season)"
   + "}");
get_numberOfSeasonsMR.setReduce(
  "function (key, values, rereduce) {"
    + "return Math.max.apply({}, values)"
    + "}");

Map<String, MapReduce> view = new HashMap<>();
view.put("get_numberOfSeasons", get_numberOfSeasonsMR);

designDocument.setViews(view);

dbClient.design().synchronizeWithDb(designDocument);

int count = dbClient.view("mydesign/get_numberOfSeasons").key("Arrow").queryForInt();

关于java - reduce() 不适用于 lightcouch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22537282/

相关文章:

javascript - node.js 可以像 CouchApp 那样执行从 CouchDB 中提取的 JavaScript 函数吗?如何?

java - 相当于 mongo 的输出 :reduce option in hadoop

java - 设置与 GUI (Java Swing) 自动交互之间的延迟

java - 将 @ElementCollection 映射到同一个表

java - SpringBoot loader.path 无法加载外部Jar

Java mapToInt 与 Reduce with map

hadoop - 为什么会发生Hadoop Spilling?

couchdb - 如何将 SQL Server 数据库迁移到 CouchDB

mongodb - 最佳数据记录数据库

java - Jsp 连接到 servlet HTTP 状态 404