在使用 Couchbase 进行一些研究和测试后,我得到了一些不错的结果。 然而,奇怪的是, View 必须提前创建,而且不太灵活。
基本上,如果我有这样的观点..
function(doc, meta) {
emit([doc.name, doc.location, doc.gender, doc.birthYear, doc.birthMonth], null);
}
我想查询不同的键。例如,姓名可能 =“John”,性别 =“M” 我似乎无法做到 startKey = ["John", {}, "M"], endKey = ["John", {}, "M", {}]。
同样,如果我只想按性别和出生月份过滤上述内容怎么办? 看来我必须为每种可能的查询类型手动创建一个单独的 View ,如果不是最佳的,它会包含大量数据点。
我还没有看到任何涉及此问题的问题。另外,我研究了将参数传递给映射或减少以动态地执行其中任何操作,但这无法完成。我会被困在跨所有组级别提取所有记录,然后必须手动排序/聚合这些数据。
这可以做到吗?
谢谢
最佳答案
从 Couchbase 版本 4.x 开始,您有 N1QL query language 。您可以指定过滤条件来选择 json 对象,而无需任何 View 。
因此,根据您的示例,您应该能够发出这样的查询:
SELECT *
FROM your_bucket_name
WHERE name = 'John' AND gender = 'M'
这是一个N1QL tutorial来感受一下。
另一种方法是使用 Couchbase integration with ElasticSearch并在 ElasticSearch engine 中执行搜索查询这将返回根据您的搜索条件找到的所有键。
关于dynamic - View 中的 Couchbase 通配符/变量键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25475389/