繁体   English   中英

Couchbase视图结果与JAVA和REST不同

Couchbase views result is different from JAVA and REST

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

为什么REST和Java中视图的结果不同? 例如,从REST提供给定的准确结果,但是从Java它将返回特定键的整个文档。 我有这个文件:

{
  "doctype": "people",
  "id": "person0",
  "name": "Kasidit Treweek",
  "homepage": "http://www.cohera.com/~Treweek",
  "creditcard": "9941 9701 2489 4716",
  "profile": {
    "income": 20186.59,
    "interest": [
      {
        "category": "category251"
      }
    ],
    "education": "Graduate School",
    "business": "No"
  }
}

当我在视图中使用地图功能时:

function (doc, meta) {
   if( (doc.doctype && doc.doctype=="people") && doc.id=="person0"){
    emit(doc.id,doc.name);     
    }

}

REST的结果是:

{"total_rows":1,"rows":[
{"id":"person0","key":"person0","value":"Kasidit Treweek"}
]
}

但是从Java它将返回带有键“ person0”的整个文档,例如

{"person0":{"doctype": "people",.....}}

这是我简单实现的Java代码:

ViewResponse response = client.query(view, query);
java.util.Map<String, Object> map = response.getMap();
1 个回复

那是因为您使用的是ViewResponseWithDocs,因此getMap方法会执行此操作并遍历视图行并构造id + document的映射。

@Override
public Map<String, Object> More ...getMap() {
if (map == null) {
 map = new HashMap<String, Object>();
 Iterator<ViewRow> itr = iterator();

  while(itr.hasNext()) {
  ViewRow cur = itr.next();
  map.put(cur.getId(), cur.getDocument());
  }
}
return Collections.unmodifiableMap(map);
}

您要做的是:

for (ViewRow viewRow : viewResponse) {
 viewRow.getKey();
 viewRow.getId();
 viewRow.getValue();
 //Logic for above information here
}

同样,您的文档ID和文档密钥似乎是同一回事,因此您不必发出它,因为始终会发出密钥。

1 Couchbase函数以查询视图:从Java发送参数

我有以下格式的一些Couchbase数据 我想获取其交易列表中包含早于给定日期的密钥的ID(例如,将不会为“ 2017-11-01”的值检索此对象,但对于“ 2017-12-12”的情况则为ID) 。 我做了一个视图,但是我想参数化日期字符串: 我尝试编写一些N1QL查询, ...

2 couchbase:使用java查询视图ERROR连接超时

我在沙发基站的网站上使用你的示例代码,我使用java,jdk版本是1.6。按键获取和获取值是好的,但是在查询视图时,总会出现错误。 这是我的代码: 这是错误日志 从Web管理控制台我可以看到我已经发布了视图。它也可以在该控制台中工作。防火墙已关闭,我已经尝试过couchba ...

3 Couchbase索引视图过于频繁

我经常使用Stale参数为FALSE的 Java 2.1 SDK频繁地(每分钟运行一次)访问Couchbase视图。 有时我可以看到索引卡住了很长时间。 我应该从代码中删除过时的参数还是减少对视图的频繁访问? 顺便说一句,没有每分钟批量插入/更新。 我已附上屏幕截图 ...

4 Couchbase视图为空

如果尝试通过Java SDK的视图从Couchbase服务器检索文档列表,则会得到一个空结果列表: ViewResult result = dataManager.getBucket().query(ViewQuery.from("_design/dev_task", "byID")); Li ...

5 Couchbase中的复合视图

我是Couchbase的新手,正在努力获取复合索引来执行我想要的操作。 用例是这样的: 我有一组“枚举”存储为文档 每个都有一个“ last_updated”字段,正如您可能已经猜到的那样,该字段存储该字段的最后更新时间 我只希望显示那些自给定日期以来已更新的枚举,但 ...

6 Couchbase视图的本地测试

我正在开发Couchbase视图,并且使用控制台是有局限性的,因为输出行被截断并且JavaScript错误不会显示。 是否有使用Node.js之类的引擎在本地测试视图的便捷方法? 谢谢! ...

7 Couchbase视图:按键排序

我正在使用Couchbase 3.0,并且有一个用例,我想执行排序,但是由于我在沙发上通过cam不提供按值排序,但提供了按键排序,但是当我使用Descending(true)时,它返回我为空名单。 另一方面,如果我只是简单地使用它而不下降,那么它给了我所有相关的文档。 我的地图功能是: ...

8 通过没有视图的couchbase键迭代

在couchbase中,我想知道是否有一种方法 - 没有使用视图 - 迭代数据库密钥。 管理界面似乎这样做,但也许它做了一些特别的事情。 我想要的是像这样调用来检索一组键: $ result = $ cb-&gt; get(“KEY_ALBERT”,“KEY_FRED”); 结果是一 ...

9 Couchbase视图查询

我有一个视图,可以为我过滤掉数据。 我想在我的搜索条件中添加一个检查=&gt;如果文档中不存在任何字段,请不要考虑该文档。 这是我的查看代码, studentId可能不在所有文档中。 有指针吗? ...

10 如何减少 Couchbase 上的视图调用?

现在我有一个相当大的分析集,每个都在它自己的文档中。 我运行一个 map/reduce,将它们减少到这样的聚合集: 获取开始键和结束键(时间开始和时间结束)并返回以下内容 现在的问题是说我要互相获取 7 天的数据。 如果我提供一个开始(7 天前)和(今天)我得到一个聚合数组 - 所以我被迫查询 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM