Hi Nitin,
On 10 Aug 2009, at 08:48, Nitin Borwankar wrote:
Hello all,
I am trying to write a reduce function which takes the map fn output
(k1, v11),
(k1, v12),
(k1, v13),
(k2, v21),
(k2, v22),
(k3,v31)
and produces as a result of the reduce
{
k1: [v11,v12,v13],
k2: [v21,v22],
k3: [v31]
}
You shouldn't do this in CouchDB. Reducing needs to truly reduce you
data set. You are trying to turn tall lists into wide lists. that
won't work. If you want to get the desired result, make your reduce
function return null; and query the view with group=true. CouchDB does
the grouping for you.
where v11 etc could themselves be lists and do not need to be
unpacked in
the final result but can stay as nested list of lists.
But I am lost as far as the (keys, values, rereduce) signature.
keys and values contain lists of keys and associated values. The
reduce step calls you function in two different ways. The first way is
when the map output gets fed into the reduce function. In this case
rereduce is set to false.
All other (one to N) invocations of reduce operate on the output the
previous run produced. This is the default case and rereduce is set to
true. Your code might want to (or have to) behave differently on the
first normalization step and the second reduction step and the
rereduce flag tells you what step you are in.
Cheers
Jan
--
So far I have managed by just reusing the return sum(values) on
numeric
values, but this is different and I need some conceptual help with
reduce/rereduce for non-numeric values and grouping into lists
instead of
taking the sum.
Thanks much,
Nitin
37% of all statistics are made up on the spot
-------------------------------------------------------------------------------------
Nitin Borwankar
nborwan...@gmail.com