CouchDB reduce函数不会正确地对发射值进行分组

时间:2012-07-25 07:32:41

标签: couchdb

我是CouchDB的新手,正在玩卷毛,但我似乎无法正确地减少数据

curl -X POST -d '{ 
  "map":"function(doc){ emit(doc.loc, 1) }",
  "reduce":"function(keys, values){ return sum(values) }"
}' -H 'Content-Type: application/json' 'http://localhost:5984/users/_temp_view'

我的目的是根据他们的位置(doc.loc)减少我的文档,例如'US','AU','CA'。

我希望能得到这样的结果:

{
  "rows":[
   {"key":"US", "value":10},
   {"key":"AU", "value": 5},
   {"key":"CA", "value": 10}
  ]
}

但相反,我得到一个包含所有文档的空键

{"rows":[{"key":null,"value":1822}]}

正如我尝试的理智检查一样

emit(doc.loc, doc.loc)

得到了

{"rows":[{"key":null,"value":"00AUAUAUAU...

这意味着我的数据上有一个doc.loc


这又是新手级别,所以我可能很简单。

1 个答案:

答案 0 :(得分:1)

解决了我在查询中遗漏?group=true的问题。

curl -X POST -d '{ 
  "map":"function(doc){ emit(doc.loc, 1) }", 
  "reduce":"function(keys, values){ return sum(values) }" 
}' -H 'Content-Type: application/json' 'http://localhost:5984/users/_temp_view?group=true'

给了我预期的结果

{"rows":[{"key":"--","value":25},{"key":"AU","value":493}, ...