2

我在 Couchbase 中的 reduce 函数[仅用于测试]:

function(keys,values,reduce){
return values[0];
}

结果在这里

{"rows":[
{"key":null,"value":{"doctype":"closed_auctions","buyer":"person14108"}}
]
}

我想在 reduce 中获取单个值以进行进一步处理,因此当我尝试获取 doctype 的值时,即使应该有“closed_auctions”,values[0].doctype它也会返回。null问题是什么?如何在 reduce 函数中获取单个值(我的意思是字段值)。

4

1 回答 1

3

你的 reduce 函数在 map 执行后调用。还要记住 re-reduce 也被调用,那时你的结果会被进一步聚合。运行此视图时应使用“group=true”。

所以,有时 values[0] 可能没有文档

您需要首先检查属性/文档是否存在,例如

function(keys, values, rereduce)
{
  if (values[0] && values[0].doctype)
  {
    return values[0].doctype;
  }
}

希望有帮助。

另见:9.5.2.4。编写自定义归约函数

于 2014-01-23T21:20:53.340 回答