Evan Testvoid
Evan Testvoid

Reputation: 29

Couchbase wildcard / variable keys in view

After doing some research and testing with Couchbase, I am getting some good results. However, it seems strange that views must be created a head of time and are not very flexible.

Basically, if I have a view like this..

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

And I want to query but different keys. Such as, maybe name = "John" and gender = "M" It doesnt seem I can do startKey = ["John", {}, "M"], endKey = ["John", {}, "M", {}].

Similarly, what if I just want to filter the above by gender and birth month? It seems i have to manually crate an individual view for every possible type of query, which with lots of data points if less than optimal.

I havnt seen any questions addressing this. Also, I looked into passing args to map or reduce to do any of it dynamically but that cant be done. I'd be stuck pulling ALL records across all group levels then having to manually sort/aggregate this data.

Can this be done?

Thank you

Upvotes: 3

Views: 1899

Answers (2)

user1697575
user1697575

Reputation: 2848

As of Couchbase version 4.x you have N1QL query language. You can specify a filter criteria to select your json objects without having any views in place.

So as per your example, you should be able issue a query like that:

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

Here is a N1QL tutorial to get feel of it.

Yet another way is to use Couchbase integration with ElasticSearch and execute search query in ElasticSearch engine that will return you all the keys it found based on your search criteria.

Upvotes: 2

avsej
avsej

Reputation: 3972

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

N1QL is more rich wuering language to couchbase data, which does not as limited as views

Upvotes: 1

Related Questions