day=1 day was a typo *and* pseudocode.
I mean simply that you should increment 'day' by '1 whole day' in the loop.
let's assume day is an integral value from some epoch (0 meaning jan 1
1970, 1 meaning jan 2 1970, and so on).
for (day=startDay; day<endDay; day++) {
emit(day, null);
}
B.
On 12 February 2011 14:46, Warner Onstine <[email protected]> wrote:
> I tried that with no success (in fact it completely borked all views
> for that document type and had to delete it to get things working
> again. I may try and monkey around with these two scripts again to see
> what I did wrong.
>
> It really didn't like
> day= 1 day
>
> and honestly I'm not even sure what that's supposed to do.
>
> Thanks for the suggestions, I'll let you know if I figure it out. But
> I am seriously thinking about using ElasticSearch to make it a more
> robust searching solution (I have a lot of searching coming up soon).
>
> -warner
>
> On Sun, Feb 6, 2011 at 3:37 PM, Robert Newson <[email protected]> wrote:
>> Within couchdb itself, I think you'd have to do as Nils suggested;
>>
>> for (day = startDate; day < endDate; day= 1 day) {
>> emit(day, null);
>> }
>>
>> then ?key=<day I want>
>>
>> Or you could use couchdb-lucene, index startDate and endDate as dates,
>> query with ?q=startDate:[day TO maxdate]&endDate:[mindate TO day]
>> where 'date' is the date you are searching for.
>>
>> B.
>>
>> On Sun, Feb 6, 2011 at 10:31 PM, Nils Breunese <[email protected]> wrote:
>>> You could emit a view index entry for every day in the date range of a
>>> document? This could become inefficient storage-wise if you have large date
>>> ranges.
>>>
>>> What exactly "starts returning records that don't match at all"? In what
>>> way are you querying your view? I have to admit I have no idea how I could
>>> get the information you're looking for from that complex key. Also, the
>>> emit method takes two arguments AFAIK: a key and a value. You seem to be
>>> emitting a single value?
>>>
>>> Nils.
>>> ________________________________________
>>> Van: Warner Onstine [[email protected]]
>>> Verzonden: zondag 6 februari 2011 22:57
>>> Aan: [email protected]
>>> Onderwerp: date range querying
>>>
>>> Ok, been banging my head against this for a while and having no luck
>>> figuring out the logical way to do this (other than installing
>>> ElasticSearch - which I'll be doing in the near future).
>>>
>>> I have records that have startDate and endDate ranges. I want to query
>>> the view based on today's date. Say I have a record that has a start
>>> date of 1/31/2011 and an end date of 2/13/2011 and I want to find out
>>> which records fall within today's date.
>>>
>>> In other words
>>> 1/31/2011 < 2/6/2011 < 2/13/2011
>>>
>>> How in the world do I do that? I've been trying something like this:
>>> var startDate = new Date(doc.startDate);
>>> var endDate = new Date(doc.endDate);
>>> var startYear = startDate.getFullYear();
>>> var startMonth = startDate.getMonth();
>>> var startDay = startDate.getDate();
>>> var endYear = endDate.getFullYear();
>>> var endMonth = endDate.getMonth();
>>> var endDay = endDate.getDate();
>>> emit([
>>> startYear,
>>> startMonth,
>>> startDay,
>>> endYear,
>>> endMonth,
>>> endDay
>>> ]);
>>>
>>> But as soon as I add in the endYear variable it goes wonky and starts
>>> returning records that don't match at all. Any help is greatly
>>> appreciated.
>>>
>>> -warner
>>> ------------------------------------------------------------------------
>>> VPRO www.vpro.nl
>>> ------------------------------------------------------------------------
>>>
>>
>