Hi there,
I have a heap of documents that record several measurements for a
given day - for example for temperatures one might look like
{
"_id" : "whatever",
"_rev" : "whatever",
"date" : "29/1/2011",
"hi-temp" : 30
"low-temp" : 16
}
I would like to generate graphs from this data, and my graphing
library wants it in this format
{
"hi-temp" : [ [ "29/1/2011", 30], [ "28/1/2011", 32], [ "27/1/2011",
29], ...etc ],
"low-temp" : [ [ "29/1/2011", 16], [ "28/1/2011", 17], [
"27/1/2011", 10], ...etc ]
}
So, I wrote the following map function
function(doc) {
function(doc) {
for ( var key in doc) {
if (key[0] != '_' && key != "date") {
emit(key,[doc.date,doc[key]])
}
}
}
}
and the following reduce function
function(keys, values, rereduce) {
return values;
}
and that all seems to work :)
Two things bother me though...
1) I suspect that if a re-reduce call happened things would break
because I would end up with triple nested arrays (rather than double)
so perhaps I should be flattening the values array before returning
on a re-reduce ? But I am not sure, and so far I dont seem to be
getting any re-reduce calls.
Is there any way of forcing re-reduces to happen so I can test?
2) I'm not actually reducing in the reduce function, just using it to
collate by key - and CouchDB docs are to be littered with warnings
against doing that sort of thing.
Is there some other way I should be doing this with couch? Or is
couch a poor fit for this problem?
cheers
Perryn