Nicolas Clairon wrote:
Hi all !

I have a question (wich is a big concerne to me and my project) about
the group_level option.

I want to display all doc by tag and then sorting them by date.

The map function :
-----------------------------------
function(doc){
  for(var t in doc.tags){
    emit([doc.tags[t], doc.creation_date], doc.title);
  }
}
------------------------------------

* creation_date is a float since the epoch (ie something like this 12423344.003)
* docs can have the same title

[snip]

$ curl 
http://localhost:5984/db/_design/foo/_view/by_tag_sort_by_date?reduce=false

returns :

{"id":"8075ba2ef7418f4d6c9a3e89be83acd8","key":["tag1",1239361935.000004],"value":"title2"},
{"id":"8d9132318a6c34c646e9e2cd43823ffa","key":["tag1",1239794744.000002],"value":"title1"},
{"id":"f49a28ffd2118298c1be7440ec4556fa","key":["tag2",1239794744.000002],"value":"title1"},

Hi, Nicolas. I'm curious, can you perhaps just use the map, with no reduce? To get a date-sorted list of docs for tag "tag1", you can query with startkey=["tag1", null]&endkey=["tag1", {}].

(null always sorts before floats, and {} always sorts after.)

Also, do you think that your reduce function breaks the guidelines from the Wiki? http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views (Check toward the bottom under "Reduce Value Sizes.") The rule of thumb is that reduce is for summarizing information and map alone is good for extracting sets of data.

--
Jason Smith
Proven Corporation
Bangkok, Thailand
http://www.proven-corporation.com

Reply via email to