4.3. 对文档ID使用ISO格式的日期¶
这个 ISO 8601 date standard 描述一个在年-月中表示日期字符串的有用方案-代托尔:分钟:秒。微秒格式。对于CouchDB数据库中有时间限制的文档,这是创建唯一标识符的非常方便的方法,因为JavaScript可以直接使用它来创建日期对象。使用此示例 map
功能:
function(doc) {
var dt = new Date(doc._id);
emit([dt.getDate(), doc.widget], 1);
}
简单使用 group_level
放大你想用的时间。
curl -X GET "http://localhost:5984/transactions/_design/widget_count/_view/toss?group_level=1"
{"rows":[
{"key":[20],"value":10},
{"key":[21],"value":20}
]}
curl -X GET "http://localhost:5984/transactions/_design/widget_count/_view/toss?group_level=2"
{"rows":[
{"key":[20,widget],"value":10},
{"key":[21,widget],"value":10},
{"key":[21,thing],"value":10}
]}
另一种方法是使用 parseint()
和 datetime.substr()
要为返回键切出有用的值:
function (doc) {
var datetime = doc._id;
var year = parseInt(datetime.substr(0, 4));
var month = parseInt(datetime.substr(5, 2), 10);
var day = parseInt(datetime.substr(8, 2), 10);
var hour = parseInt(datetime.substr(11, 2), 10);
var minute = parseInt(datetime.substr(14, 2), 10);
emit([doc.widget, year, month, day, hour, minute], 1);
}