CouchDB在reduce函数中获取日期的统计信息
CouchDB get stats for dates in reduce function
我目前正在使用couchDB,并且在构建日期的reduce函数时遇到问题。
数据库由不同位置的时间线数据组成。每个条目都有一个'locationId'(字符串),一个'datetime'(数组以字典形式保存,如[年,月,日,小时,分钟,秒]),一个值(双精度)
我想找出,在每个有值存在的位置,哪个是最低和最高的日期时间。时间轴值具有不同的开始日期和结束日期。
在第一次尝试中,我使用_stats on milliseconds:地图:
function(doc) {
emit(doc.locationId, new Date(doc.datetime[0],doc.datetime[1],doc.datetime[2], doc.datetime[3], doc.datetime[4], doc.datetime[5]).getTime() ) }
减少:_stats
提供每个locationId正确的最小和最大毫秒数。现在我想有输出在一个更可读的形式(格式化日期字符串)
我尝试了不同的方法,这是最后一个:- map将locationId作为键,将Date作为值- reduce将每个Date转换为毫秒,使用Math.min查找最早的日期,重新将毫秒转换为日期并返回
地图:function(doc) {
emit(doc.locationId, new Date(doc.datetime[0], doc.datetime[1],doc.datetime[2], doc.datetime[3], doc.datetime[4], doc.datetime[5]) ) }
减少:
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);
}
这会导致value为'null'。这种情况下是否可以有格式化的日期输出?
我已经找到了解决方案:
地图: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;
}
result: (key=locationID, value=[origindate, latestDate])
相关文章:
- 比较从函数和生成的日期对象
- Json数据包含日期和时间格式
- Javascript日期格式类似于ISO,但本地
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- 如何在JavaScript中延长当前日期
- 两位数的月份日期验证
- 更改angularjs中的日期-时间格式
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 将日期时间从json转换为可读格式
- NodeJS日期格式不起作用
- jquerydatetimepicker日期和时间应在框默认值中,而无需单击框
- 带有“日期时间”x轴的图表 - 在向下钻取时使用类别
- Momentjs 抓取今天的日期并设置时间会导致它快进 24 小时
- jQuery:抓取日期&来自网页的时间数据
- 如何通过在检查器中操作Javascript来抓取表?页面仅显示当前日期's的数据,但我想回到过去,重新收集
- 是否有可能从silverlight应用程序(如freestockcharts)中抓取日期?
- CouchDB在reduce函数中获取日期的统计信息
- 抓取足球统计与动态内容
- 日期值未显示从数据库拉取的值
- jquery ui - JavaScript钻取日期picker