incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nicolas Clairon <clai...@gmail.com>
Subject group_level and sorting
Date Sat, 18 Apr 2009 16:52:05 GMT
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

the reduce function:
-----------------------------------
function(key, values, rereduce){
    var results = [];
    if(!rereduce){
        for( var v in values){
            if (results.indexOf( values[v] ) < 0){results.push(values[v]);}
        }
    }
    else{
        for( var i in values){
            for(var e in values[i]){
                results.push(values[i][e]);
            }
        }
    }
    return results;
}
-----------------------------------

$ 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"},

this is ok because title1 is newer than title2. But now, I want all
displayed by tag so I use the group_level :

$ curl http://localhost:5984/db/_design/foo/_view/by_tag_sort_by_date?group_level=1

{"key":["tag1"],"value":["title1","title2"]},
{"key":["tag2"],"value":["title1"]},

I have all titles by tag but the docs is not sorted by date anymore...

Does group_level keeps the absolute sorting ? Does the sort break anyway ?

Thanks,

Nicolas

Mime
View raw message