Thanks for the response,

The reason I have it the way I do is the same IP can show up multiple times on different dates and the application allows the user to enter an IP and a date range and see each time the IP has been entered in the db.

So 90% of the queries are something like:

emit([doc['ip'], doc['created_at']], null);

http://localhost:5984/foo/_design/test/_view/by_ip_and_created_at?startkey= ["27.0.0.1" ,"2009/08/01"]&endkey=["27.0.0.1","2009/08/16"]

Now the customer wants a page that can show ALL ip's in a given date range and as a result I was trying to use the views already defined.

So if I need to query data both ways, any suggestion.

Thanks,

Ryan

On Sep 8, 2009, at 2:34 PM, Paul Davis wrote:

{"key":["27.0.0.1","2009/08/12 18:37:06 +0000"],"value":null},
{"key":["12.0.0.1","2009/08/13 02:29:57 +0000"],"value":null},
{"key":["17.0.0.1","2009/08/14 21:25:27 +0000"],"value":null},
{"key":["31.0.0.1","2009/08/15 02:54:03 +0000"],"value":null},
{"key":["11.0.0.1","2009/08/16 08:35:15 +0000"],"value":null},
{"key":["12.0.0.1","2009/08/17 19:21:59 +0000"],"value":null}

If I want all of the IP's in a given date range (2009/08/13 - 2009/08/16) what is the right way to construct the query? The hang-up is trying to figure out the right value for the first item in the key to act as a '*'

That's because you can't. The answer is to swap the order of your emit, thus:

emit([doc.ip, doc.date], null) -> emit([doc.date, doc.ip], null)

And then use:

http://localhost:5984/foo/_design/test/_view/by_ip_and_created_at?startkey= ["2009/08/13",
null]&endkey=["2009/08/16", {}]

HTH,
Paul Davis

Reply via email to