我有Cloudant db,实际上是couchdb。 我的文档中有一个日期字段,我需要获得类似于_stats在数字字段上提供的统计信息(例如min,max,avg,count)。有没有办法在cloudant中做到这一点?
我在map函数中转换为timestamp并将其发送到reduce。这是正确的方法吗?
答案 0 :(得分:0)
CouchDB和Cloudant允许将日期索引为MapReduce索引中的复合键,例如生成这样的键:
[ 2014, 5, 21]
其中数组的每个元素分别代表存储日期的年,月和日。
这可以在地图函数中实现,如下所示:
function(doc) {
if (typeof(doc.date) === "string") {
var d = new Date(doc.date);
emit([ d.getFullYear(), d.getMonth()+1, d.getDay()], null);
}
}
使用_count
缩减器,此索引可与group_level
参数一起使用,以生成对时间序列数据的全面分析,例如
通过将数值添加到emit
的第二个参数中,并使用_stats
,可以轻松地从索引中提取时间序列统计信息,并按上述方式进行分组。