使用视图在couchDB中的各个文档之间返回唯一值
Returning a unique value across documents in couchDB usings views
我有一系列文档,每个文档包含一个日期和一个字母列表。我需要每个键的输出是一个唯一的字母,每个字母的最新日期作为值。
使用一个简单的映射函数,如下所示:
{
"_id": "_design/output",
"_rev": "1-c7b904b0e93709113c49127efb40187a",
"language": "javascript",
"views": {
"output": {
"map": "function(doc) {'n emit(doc.args.report.updated_partitions, doc.timestamp);'n}",
"reduce": "function(key, value, reduce) {'n return (value)'n}"
}
}
}
我得到以下结果:
{"total_rows":2,"offset":0,"rows":[
{"id":"8e561dd15fd33acfc7c4502c58008c2a","key":["a","b"],"value":1403818824},
{"id":"8e561dd15fd33acfc7c4502c5800a212","key":["a","c","d"],"value":1403818700}
]}
我正在寻找的输出应该看起来像:
{"total_rows":2,"offset":0,"rows":[
{"id":"8e561dd15fd33acfc7c4502c58008c2a","key":["a"],"value":1403818824},
{"id":"8e561dd15fd33acfc7c4502c58008c2a","key":["b"],"value":1403818824},
{"id":"8e561dd15fd33acfc7c4502c58008c2a","key":["c"],"value":1403818824},
{"id":"8e561dd15fd33acfc7c4502c5800a212","key":["d"],"value":1403818700}
]}
我实际上找到了一个更简单的方法。基本步骤如下:
- 将每个字母映射到日期
- 通过返回所有日期的键数组的最大值来减少结果。
地图如下:
function(doc) {
var files = doc.args.report.updated_partitions;
var timestamp = doc.timestamp;
for (i=0; i<files.length; i+= 1){
var file_name = files[i];
emit(file_name, timestamp);
}
}
和减少看起来像:
function(key, value, reduce) {
return (Math.max.apply(null, value))
}
结果将是每个字母的唯一键,其值为所有文档中的最新日期。
这个用例是当每个文档都有一个被修改的文件列表和修改发生的日期,但是您想知道每个文档的最新修改日期。
相关文章:
- JavaScript-使用sessionStorage保存文档之间共享的复选框状态
- 文档和元素之间的关系是什么?为什么父元素也有getElementsByTagName方法
- Couchdb/Pouchdb多个用户和多个文档之间的关系
- 在文档之间使用jQuery的Javascript不起作用
- 一个html的id甚至可以在相互引用的不同html文档之间关联吗
- 使用嵌入式文档列表和使用ObjectId列表之间有区别吗
- 如何查找iframe中某一点与iframe文档顶部之间的高度
- 获取元素与文档顶部之间的距离
- 使用easyXDM在父文档和从不同域(amazon)加载的子iframe之间进行通信
- 两个窗口或选项卡之间的跨文档消息传递,而不是iframe
- 共享文档.页面之间准备好javascript
- 谷歌云端点文档之间的差异,以及在我的应用程序中的工作
- IFrame和IFrame之间的跨文档消息传递问题家长
- 使用视图在couchDB中的各个文档之间返回唯一值
- 无法获取文档.execCommand('undo')在浏览器之间以相同的方式工作
- 在两个视图之间移动文档
- 流星,MongoDB.从集合中获取数据的麻烦(查找两个日期之间的文档)
- 在文档之间移动整个html页面上下文
- 取mongoDB中相邻文档之间的差异
- HTML 文档之间的多向滚动