Couchbase通配符/变量键视图中

时间:2014-08-24 19:17:56

标签: dynamic views couchbase

在使用Couchbase进行一些研究和测试后,我得到了一些好的结果。 然而,看起来必须创建一个时间长度并且不够灵活似乎很奇怪。

基本上,如果我有这样的观点..

function(doc, meta) {
    emit([doc.name, doc.location, doc.gender, doc.birthYear, doc.birthMonth], null);
}

我想查询但不同的键。比如,也许名字=“约翰”和性别=“M” 我似乎无法做到startKey = [“John”,{},“M”],endKey = [“John”,{},“M”,{}]。

同样,如果我只想按性别和出生月份过滤上述内容,该怎么办? 似乎我必须为每种可能类型的查询手动创建一个单独的视图,如果不是最优的话,它会包含大量数据点。

我看到有任何问题要解决这个问题。此外,我调查了传递args以映射或缩减以动态地执行任何操作,但是无法完成。我将被困在所有组级别的所有记录中,然后必须手动排序/聚合此数据。

可以这样做吗?

谢谢

2 个答案:

答案 0 :(得分:2)

从Couchbase版本4.x开始,您有N1QL query language。您可以指定筛选条件以选择json对象,而无需任何视图。

因此,根据您的示例,您应该能够发出类似的查询:

SELECT *
  FROM your_bucket_name
    WHERE name = 'John' AND gender = 'M'

这是一个感受它的N1QL tutorial

另一种方法是使用Couchbase integration with ElasticSearch并在ElasticSearch engine中执行搜索查询,该搜索查询会根据您的搜索条件返回找到的所有密钥。

答案 1 :(得分:1)

http://www.couchbase.com/communities/n1ql

N1QL对于基数数据来说是更丰富的语言,它不像视图那样受限