Java reduce()不使用Lightcoach

Java reduce()不使用Lightcoach,java,mapreduce,couchdb,Java,Mapreduce,Couchdb,我有一个管理电视剧的wirtten程序,我被lightcoach和一个特定的数据库查询所困扰。这就是我目前所拥有的。为了设置数据库视图,我使用了以下行: MapReduce get_numberOfSeasonsMR = new MapReduce(); get_numberOfSeasonsMR.setMap( "function(doc) { " + " emit(doc.seriesName, doc.season)" + "}"); get_numberOfSeason


我有一个管理电视剧的wirtten程序,我被lightcoach和一个特定的数据库查询所困扰。这就是我目前所拥有的。为了设置数据库视图,我使用了以下行:

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中显示的结果

int nr = client.view("design/get_numberOfSeasons").key("Arrow").queryForInt();
例外情况:

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()函数中发出字符串,而不是在int上,但没有任何区别。我做错了什么?或者有人可以发布一个成功的lightcoach 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();
CouchDbClient dbClient=new CouchDbClient();
DesignDocument DesignDocument=新设计文档();
designDocument.setId(“_design/mydesign”);
designDocument.setLanguage(“javascript”);
MapReduce get_numberOfSeasonsMR=新建MapReduce();
获取季节设置图的编号(
“函数(doc){”
+排放(文件序列名称、文件季节)
+ "}");
获取季节编号msr.setReduce(
函数(键、值、返回值){
+返回Math.max.apply({},值)
+ "}");
Map view=newhashmap();
view.put(“get_numberOfSeasons”,get_numberOfSeasonsMR);
designDocument.setview(视图);
dbClient.design().synchronizeWithDb(设计文档);
int count=dbClient.view(“mydesign/get_numberofseasures”).key(“Arrow”).queryForInt();

谢谢您的回答。我做了一些调试,结果证明代码的lightcoach部分确实工作正常,错误是由其他代码引起的。