couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Simon Metson <simonmet...@googlemail.com>
Subject Re: getting most recent doc
Date Sat, 17 Apr 2010 06:37:01 GMT
Hi,
	If your timestamp is the time couchdb gets the document could you  
possibly ditch the view and just use _changes?
Cheers
Simon

On 16 Apr 2010, at 09:46, wolfgang haefelinger wrote:

> Thanks Robert
>
> for your answer. However, it is not exactly what I was looking for
> (due to my inappropriate problem description).
>
> Firstly, I do want to have the document instead of the time stamp in
> order to avoid that additional document fetch. That's obviously easy
> to fix:
>
> function(doc) { //
> emit([doc.name, doc.timestamp], doc);
> }
>
> However, in my original attempt I can easily get an overview over all
> categories using "group=true". And again my apologies for not having
> mentioned this - that's what I actually want:
> * I want to have an overview over all "categories" where each category
> is associated with the most recent event (document).
> * Another goal is to limit the traffic to a minimum, i.e. I don't want
> to discard or skip items returned by the (couchdb) server.
>
> Your map function works fine - if I know the category names in
> advance. Assume that I have N categories. Then I have to query the
> server N+1 times in order to present the overview (1 query to get all
> categories and N queries to get most recent event document).
>
> This is exactly the same as my second attempt: 1 query to get
> categories and most recent document id plus N simple get queries
> fetching documents. But what I was wondering is, whether I can avoid
> that extra N queries?
>
> // Regards
>
> P.S.:
> Obviously is your example more flexible as it would very easily allow
> me to calculate the most N recent events.
>
> P.P.S.:
> Btw, I had some hard times regarding parameter "descending" which is
> IMHO harmful documented ("reverse the output" => no, not at all!) and
> inappropriate named. What "descending" does is changing the "key
> traversal order", not more and not less. The output of that traversal
> is unchanged.
>
>
>
>
>
> On Fri, Apr 16, 2010 at 12:42 AM, Robert Newson <robert.newson@gmail.com 
> > wrote:
>> Something like;
>>
>> map;
>> function(doc) {
>>  emit([doc.name, doc.timestamp], null);
>> }
>>
>> no reduce method.
>>
>> with calls like;
>>
>> http://localhost:5984/db/_design/ddoc/_view/view?startkey=["name", 
>> {}]&endkey=["name"]&descending=true&limit=1
>>
>> should get you the latest (highest timestamp) for document with
>> doc.name of "name"
>>
>> On Thu, Apr 15, 2010 at 11:33 PM, wolfgang haefelinger
>> <whaefelinger@gmail.com> wrote:
>>> My apologies for asking a probably rather stupid question ..
>>>
>>> Docs in my database are events. An event has a category name, a time
>>> stamp and lots of other details. I am looking for the most recent
>>> event.
>>>
>>> I started with something like
>>>
>>> function (doc) {              // map
>>>  emit(doc.name,doc)
>>> }
>>>
>>> function (ks,vs,rr) {
>>>  var maxdoc = max_timestamp(vs);
>>>  return maxdoc;
>>> }
>>>
>>> Although I'm reducing considerably, couchdb complains that I'm not
>>> reducing hard enough :-)
>>>
>>> (* Btw, what is actually the "reduce" limit? Do attachments count  
>>> as well?  *)
>>>
>>> Then I tried something like
>>>
>>> function (doc) {
>>>  emit(doc.name,{ "_id" : doc._id, "ts" : doc.timestamp});
>>> }
>>>
>>> and with a "virtually" unchanged reduce function. Now I'm below
>>> couchdb's reduction limit. However, this view does not return the  
>>> most
>>> recent document I was looking for but the "id" of that document.
>>>
>>> I had some hope that query parameter "include_docs=true" would do  
>>> the
>>> magic (that's why I used "_id" as property name). But then I learned
>>> that "include_docs" is not supported for "reduced" views which  
>>> took me
>>> by surprise. What could be the rational for this behaviour?
>>>
>>> In summary:
>>> * Is there a way to get the "most recent" document via a view?
>>>
>>> // Regards
>>>
>>
>
>
>
> -- 
> Wolfgang Häfelinger
> häfelinger IT - Applied Software Architecture
> http://www.haefelinger.it
> +31 648 27 61 59


Mime
View raw message