0

我知道有一种方法可以使用 Couchbase java sdk 访问缩减的视图结果。我目前无法做的是使用 spring-data 来访问缩减视图。这可能吗?

看法:

View byIdGetDateStats = DefaultView.create("byIdGetDateStats",
            "function (doc, meta) {"
            + "if(doc.docType == \"com.bd.idm.model.DayLog\"){"
            + "   emit(doc.userid, doc.date)"
            +"    }}"
            ,"_stats"
            );

当我尝试使用 spring-data 访问这样的视图时:

Query query = new Query();
query.setKey(ComplexKey.of(userid)).setReduce(true).setGroup(true);
ViewResult result = repo.findByIdGetDateStats(query);

错误信息

java.lang.IllegalStateException: Failed to execute CommandLineRunner
...

Caused by: java.lang.RuntimeException: Failed to access the view
...

Caused by: java.util.concurrent.ExecutionException: OperationException: SERVER: query_parse_error Reason: Invalid URL parameter 'group' or  'group_level' for non-reduce view.
....
Caused by: com.couchbase.client.protocol.views.ViewException: query_parse_error Reason: Invalid URL parameter 'group' or  'group_level' for non-reduce view.

……

4

1 回答 1

1

不,Spring-Data-Couchbase 1.x 将始终设置reducefalse.

如果您想使用缩小视图并获得ViewResult,请使用该CouchbaseTemplate#queryView()方法。

您仍然可以通过定义自定义存储库方法在存储库中执行此操作(请参阅文档的这一章,您应该能够getCouchbaseOperations在您的实现中调用)。

于 2015-07-15T07:23:27.240 回答