2

我正在寻找存储桶中的特定 JSON 文档,但我不知道它的文档 ID,我只知道其中一个子键的值。我查看了 API 文档,但在涉及到我的特定用例时仍然感到困惑:

在 mongo 中,我可以执行如下动态查询:

bucket.get({ "name" : "some-arbritrary-name-here" })

对于 couchbase,我的印象是您需要创建一个索引(例如在 name 属性上)并使用 startKey / endKey 但这感觉不对 - 您最终还能返回多个文档吗?能够将参数传递给可以执行精确匹配的视图会很好。另外,我们将如何处理多维搜索?即名称和类别。

我想在 couchbase 实例上进行尽可能多的过滤,理想情况下将其缩小到一条记录,而不是在返回到 App Tier 时进行过滤。类似于将动态值传递给映射函数并仅发出匹配的文档。

我知道你可以使用 LINQ 和 couchbase 进行过滤,但如果我正确阅读了文档,这个过滤仍然是在客户端完成的,但至少如果我们可以将返回的数据集缩小到一个合理的子集,客户端过滤就不会这么重要

干杯

4

1 回答 1

0

因此,您在某一点上是正确的,您需要创建一个视图(确实是一个索引)才能查询 JSON 文档的内容。

因此,在您的情况下,您必须使用这种代码创建一个视图:

function (doc, meta) {
 if (doc.type == "youtype") { // just a good practice to type the doc
   emit(doc.name);
 }
}

因此,这将创建一个索引 - 分布在集群的所有节点上 - 您现在可以在应用程序中使用它。您可以使用“key”参数指向特定值

于 2013-02-07T13:08:27.720 回答