Hi Nicolas, your view code is not the best way to go. The recommendation around here would be to drop the reduce function and query the map part of the view using your doc.name. For big datasets you'll want to add key=docname to the GET request. For smaller views or cases where you're interested in the entire output of the view you could just slurp the whole thing down and pick out the slice of the rows that you want client-side. If you really want one row per key in your results you can use a reduce function, but Sven alluded to the need to account for rereduce. Your reduce function can operate on a list of values from the map, or on a list of intermediate reductions. In the latter case you'd need to concatenate the arrays that you output in the earlier reductions. For more details see the section on reduce in http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views Reduce functions work best if their output grows logarithmically with the size of the input data. Yours is linear. If you store a lot of data in that DB you'll find that the view takes up a ton of space and response time will start to lag. Hope that helps, Adam On Mar 28, 2009, at 7:25 AM, Nicolas Clairon wrote: > I use this form of reduce to group by key the results. > In the real life, I use this reduce to get all tag group by document > id. > > Something like that : > > function(doc){ > if(doc.doc_type == "MyDoc"){ > for( var t in doc.tags){ > emit(doc.name, doc.tags[t]); > } > } > } > > and the reduce : > > function(key, values){ > return values; > } > > I get the following result: > > name1 = > ["tag1", "tag2", "tag3"] > name2 => ["tag2", "tag3"] > > but sometime I get this result > > name1 = [["tag1","tag2","tag3"],["tag4","tag5","tag6","tag7"], > ["tag8","tag9"]] > > Note that if the view work well the first time, it will always work > fine. > > It is the correct way to go ? > > On Sat, Mar 28, 2009 at 12:10 PM, Sven Helmberger > wrote: >> Nicolas Clairon schrieb: >>> >>> Nop ! >>> >>> Here is the test map function : >>> >>> function(doc){ >>> emit("key", 1); >>> } >>> >>> and the reduce function: >>> >>> function(key, values){ >>> return values; >>> } >>> >>> That work well for a large usecase but sometime, I get this strange >>> behavior... >>> >> >> What purpose does the reduce function have? it doesn't really >> reduce or >> combine anything so it seems like it could just as well be left out. >> >> Regards, >> Sven Helmberger >>