Maybe you should completely describe the structure you want.
{
"_id": "12345",
"location": {
"state": "California",
"city": "Florence"
}
}
Because (1) you can define multiple views that emit any reasonable
combination of city and state in any order you might want to query and
(2) some day you might want to add an entry like
{
"_id": "98765",
"location": {
"country": "Italy",
"province": "Tuscany",
"city": "Florence"
}
}
On 2/12/2014 6:10 PM, Tito Ciuro wrote:
Hello,
Ah! I see. Well, what if I stored the path in an array instead?:
{
"_id" : "12345",
"location" : [<some_city>,<some town>]
}
If I emit (doc.location,doc._id), would I be able to write a query that matches
the second element of the doc.location array?
Thanks again for all the help,
-- Tito
On Feb 12, 2014, at 2:48 PM, Jason Winshell <[email protected]> wrote:
AFAIK, you're describing a CouchDB limitation. You may need to use
CouchDB-Lucene to get your answers. CouchDB views match keys in an index. You
can match a prefix, but not a tail. And you can't deal with case sensitivity.
You might be able to generate a view in which you reverse the chars of your
location and then match in reverse order (i.e. turning the problem into a
prefix). I think trying to coerce Couch to do that is nutty. Just use
CouchDB-Lucene.
On Feb 12, 2014, at 2:35 PM, Tito Ciuro <[email protected]> wrote:
Hello,
I have a database with documents with the following format:
{
"_id" : "12345",
"location" : <some_city>.<some town>
}
I have values like:
California.San Francisco
California.Los Angeles
Florida.Miami
...
...
What I'm trying to do is to match documents that "end with" a particular
string. Say I want to match all states where the town 'Anytown' exists:
California.Anytown
Florida.Anytown
Texas.Anytown
If I use the following query:
curl
http://127.0.0.1:5984/example/_design/test/_view/ends-with-city?key=%22California.Anytown%22
It works and returns one document (as expected), but I cannot seem to make it work when I look for an "end with" string. I have
seen examples where %007F is used to match "begins with". When I use it, I get a
{"error":"bad_request","reason":"invalid_json"} message. So I'm not sure how to proceed.
Any ideas? Thanks!
-- Tito