gpt4 book ai didi

java - reduce() 不适用于 lightcouch

转载 作者:行者123 更新时间:2023-11-30 11:20:51 24 4
gpt4 key购买 nike


我编写了一个管理电视剧的程序,但我遇到了 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com