在CouchDB中,我有一个文章集合。每个文章都有一个tags属性。我写了这个map函数来列出数据库中的所有标签
function (doc) { for(var i = 0; i < doc.metaKeywords.length; i++) emit(doc.metaKeywords[i], 1) }
但是当它列出所有的标签时,它会显示重复的标签。我只想为每个标签显示一次,并显示每个标签的重复数量,而不是发出相同键的重复行。如何修改此Map功能?
ki0zmccv1#
map函数是可以的,但没有理由发出值1。无论如何,简单的内置reduce函数_count和正确的查询都可以完成所需的一切。使用CouchDB需要理解B树,它的Reduce/Reduce文档中有一个很好的概述。我强烈建议你去研究一下这个信息。下面的代码片段突出了它通过pouchdb的用法。设计文档指定了map和reduce,例如:
map
_count
reduce
{ "_id": "_design/SO-72078037", "views": { "tags": { "map": `function (doc) { if(doc.tags) doc.tags.forEach(tag => emit(tag)); }`, "reduce": "_count", } } }
直接的东西。要获得键(标记)计数,查询非常简单:
{ reduce: true, include_docs: false, group_level: 1 }
同样,CouchDB文档也很棒-阅读组级查询第一次
1条答案
按热度按时间ki0zmccv1#
map
函数是可以的,但没有理由发出值1。无论如何,简单的内置reduce函数
_count
和正确的查询都可以完成所需的一切。使用CouchDB需要理解B树,它的Reduce/Reduce文档中有一个很好的概述。我强烈建议你去研究一下这个信息。
下面的代码片段突出了它通过pouchdb的用法。设计文档指定了
map
和reduce
,例如:直接的东西。要获得键(标记)计数,查询非常简单:
同样,CouchDB文档也很棒-阅读组级查询
第一次