1
function (doc) {
  if(doc.jsonType == 'cart') {
    if((Date.parse(doc.updated_at) + (15 * 60000)) >= Date.now()) {
      for(item in doc.items) {
        emit(item, doc.items[item].quantity);
      }
    }
  }
}

使用此功能,我可以获取在过去 15 分钟内更新的文档,例如 2,数量为 1 和 2,总和应为 3。但是,当我使用内置 reduce 函数 _sum 时,我得到 32(所有现有行的总和)。

我多次更新了视图,但仍然没有得到正确的结果。

怎么了?

4

1 回答 1

2

使用Date.now()in map(和 reduce)函数是错误的。Maps/reduce 结果保存在磁盘上,以便在查询时快速检索。您获得的价值Date.now()是地图构建时的价值,而不是查询时的价值。您可以在wikiThe Definitive Guide上找到一些关于 CochDB 地图如何工作的介绍性材料。

于 2012-05-19T06:18:10.493 回答