【问题标题】:Couch db date and overFlow沙发数据库日期和溢出
【发布时间】:2013-02-15 20:47:31
【问题描述】:

我需要使用 CouchDB 计算一个简单的任务。但是我遇到了一些问题: 我无法正确转换 Sate 字符串表示形式的时间戳。 这是我的职责:

function(doc) {
    if (doc.temp > -50 && doc.temp < 50 ) {
        var date = new Date(doc.time); 
        emit(date, doc.temp);
    }
}

我需要对同一小时内发生的不同事件进行分组。但是这个类产生一个空日期对象,我不明白为什么。

此外,我的计算平均值的 reduce 函数也不起作用,因为它会溢出。

function(keys, values) {
  return sum(values)/values.length;
}

如果我更改为这种形式,我可以设法使第一个功能工作:

function(doc) {
    if (doc.temp > -50 && doc.temp < 50 ) {
        emit(Math.round(doc.time/360000), doc.temp);
    }
}

【问题讨论】:

标签: javascript mapreduce couchdb


【解决方案1】:

reduce 函数不起作用的原因是它不处理 re-reduce 情况。

在您的reduce 函数中,您在reduce 函数中处理map 函数的结果的部分。在这种情况下,rereduce 参数为 false。

您的reduce 函数还需要处理之前reduce 调用的部分结果。在这种情况下,rereduce 参数为 true。

查看文档:http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Reduce_vs_rereduce

【讨论】:

    【解决方案2】:

    CouchDB 提供了非常高效的内置 reduce 函数。当您需要计算平均值时,通常最好使用 _stats 作为 reduce 函数,然后在客户端计算 sum/count

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      • 2015-12-19
      • 2016-01-26
      • 1970-01-01
      相关资源
      最近更新 更多