1

我从 couchbase 3.01 开始,我对视图有疑问。我阅读的文档说您不应该在索引中包含完整的文档,因为它会对存储和性能产生负面影响。现在我创建了一个映射函数,我正在null为文档发出

例如

function(doc, meta) {
  if (doc.entity && doc.entity == 'desert') {
    emit(doc.type, null);
  }
}

这应该为我的各种类型的沙漠(饼干、冰淇淋、蛋糕)创建一个索引。当我保存视图并单击管理控制台中的“显示结果”按钮时,我看到所有键的关联值为null.

如果我更改我的映射功能以包含文档,例如

function(doc, meta) {
  if (doc.entity && doc.entity == 'desert') {
    emit(doc.type, doc);
  }
}

我得到了我期望的结果,但是,我担心这是一种反模式。似乎曾经有一个查询字符串参数include_docs可以取消引用文档,但它没有出现在文档中。我应该在我生成的索引中包含完整的文档吗?如果没有,我如何按键检索文档?

4

1 回答 1

2

该模式是定义一个不包含完整 DOC 的视图。然后,您可以使用特定于您的应用程序平台(例如 Java、Python、Node.js、.Net 等)的 Couchbase 客户端库,通过设置标志 include_docs(在需要时)从您的视图中访问文档。

不应使用 REST API 向服务器读取或写入数据。数据操作(例如 set 和 get)由Couchbase SDK处理。

于 2014-11-24T20:16:30.327 回答