Javascript CouchDB在reduce函数中获取日期的统计信息

Javascript CouchDB在reduce函数中获取日期的统计信息,javascript,date,format,couchdb,reduce,Javascript,Date,Format,Couchdb,Reduce,我现在开始使用couchDB,在构建日期的reduce函数时遇到了问题 数据库由不同位置的时间线数据组成。每个条目都有一个“locationId”(字符串)、一个“datetime”(以字典形式保存的数组,如[year、month、day、hour、minute、sec])、一个值(double) 我想知道,对于存在值的每个位置,哪一个是最低和最高的日期时间。时间线值具有不同的开始日期和结束日期 在第一次尝试中,我使用了毫秒上的_stats: 地图: 减少:_统计数据 这将为每个location

我现在开始使用couchDB,在构建日期的reduce函数时遇到了问题

数据库由不同位置的时间线数据组成。每个条目都有一个“locationId”(字符串)、一个“datetime”(以字典形式保存的数组,如[year、month、day、hour、minute、sec])、一个值(double)

我想知道,对于存在值的每个位置,哪一个是最低和最高的日期时间。时间线值具有不同的开始日期和结束日期

在第一次尝试中,我使用了毫秒上的_stats: 地图:

减少:_统计数据

这将为每个locationId提供正确的最小和最大毫秒数。 现在,我希望输出的格式更可读(格式化日期字符串)

我尝试了不同的方法,这里是最后一种: -map以locationId作为键,以日期作为值 -reduce将每个日期转换为毫秒, 使用Math.min查找最早的日期, 将毫秒重新转换为日期并返回

地图:

减少:

function(keys, values) {
var timestamps = new Array(values.length);
var i = 0;
var date;
for( date in values ) { timestamps[i] = date.getTime(); i++; }
var min = Math.min.apply(null, timestamps);

return new Date(min);
}
这将导致值为“null”。
这种情况下是否可以有格式化的日期输出

我找到了解决方案:

地图:

减少:

function(keys, values) {
values.sort();
var date = [values[0][0], values[values.length-1][0]]; 
return date;
}

结果:(key=locationID,value=[earliestDate,latestDate])

我找到了解决方案:

地图:

减少:

function(keys, values) {
values.sort();
var date = [values[0][0], values[values.length-1][0]]; 
return date;
}
结果:(key=locationID,value=[earliestDate,latestDate])

function(doc) { 
if (doc.datetime && doc.plantId) 
emit(doc.plantId, [new Date(doc.datetime[0],doc.datetime[1]-1,doc.datetime[2],doc.datetime[3],doc.datetime[4],doc.datetime[5],0), new Date()] ) 
}
function(keys, values) {
values.sort();
var date = [values[0][0], values[values.length-1][0]]; 
return date;
}