4.3. 使用 ISO 格式的日期作为文档 ID

ISO 8601 日期标准 中描述了一种有用的方案,用于以年-月-日T时:分:秒.微秒的格式表示日期字符串。对于 CouchDB 数据库中的时间限定文档,这可能是一种非常方便的创建唯一标识符的方法,因为 JavaScript 可以直接使用它来创建 Date 对象。使用此示例 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);
}