Couchbase视图结果因reduce函数而异

时间:2012-05-18 11:42:03

标签: views couchdb mapreduce couchbase

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(所有现有行的总和)。

我多次更新了视图,但仍未获得正确的结果。

怎么了?

1 个答案:

答案 0 :(得分:2)

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