Javascript 计算couchdb文档中的标记数
我有一个简单的文档设计是这样的Javascript 计算couchdb文档中的标记数,javascript,mapreduce,couchdb,Javascript,Mapreduce,Couchdb,我有一个简单的文档设计是这样的 { _id: "something", type: "post", title: "A Title", content: "A Blog Content", tags: ["newtag", "oldtag", "bluetag", "youtag"] } 因此,每个文档都有一个“标记”数组。我试图做的是创建一个视图,该视图将计算标记被使用的次数。因此,它将搜索所有文档,发出标记,然后按键将它们相加。例如 Doc1 { _id: "s
{
_id: "something",
type: "post",
title: "A Title",
content: "A Blog Content",
tags: ["newtag", "oldtag", "bluetag", "youtag"]
}
因此,每个文档都有一个“标记”数组。我试图做的是创建一个视图,该视图将计算标记被使用的次数。因此,它将搜索所有文档,发出标记,然后按键将它们相加。例如
Doc1
{
_id: "something",
type: "post",
title: "A title",
content: "Blog Content",
tags: ["oldtag", "newtag", "bluetag", "youtag"]
}
Doc2
{
_id: "domethin",
type: "post",
title: "another title",
content: "another post",
tags: ["oldtag", "notag", "whytag"]
}
考虑到我需要的东西将有“oldtag”:2,“notag”:1,“whytag”:1
但我似乎不明白。我试着用
"map": "function(doc) {if(doc.type == 'post') { for(var i = 0, l doc.tags.length; i < l; i++) { emit(doc.tags[i], 1); } } }",
"reduce": "_count"
“map”:“函数(doc){if(doc.type='post'){for(var i=0,l doc.tags.length;i
但那只会让我
{“行”:[
{“key”:null,“value”:20}
]}
有人知道怎么做吗?我被卡住了。谢谢。您的视图中有无效的javascript var i=0
l doc.tags
l应分配给doc.tags.length
请参阅固定版本:
{
"_id": "_design/tagcount",
"_rev": "1-d14c9d06e652ad23df1044ffbca9d85f",
"views": {
"count": {
"reduce": "_count",
"map": "function (doc) {\n if(doc.type== 'post') { \n for(var i = 0, l= doc.tags.length; i < l; i++) { emit(doc.tags[i], 1); } } \n}"
}
},
"language": "javascript"
}
{
“_id”:“_设计/标记计数”,
“修订版”:“1-d14c9d06e652ad23df1044ffbca9d85f”,
“意见”:{
“计数”:{
“减少”:“\u计数”,
“映射”:“函数(doc){\n如果(doc.type='post'){\n for(var i=0,l=doc.tags.length;i
此外,还需要指定reduce:
http://localhost:5984//_design//_view/?limit=20&reduce=true&group=true
注意:用它们的实际值替换。视图中的javascript无效 var i=0
l doc.tags
l应分配给doc.tags.length
请参阅固定版本:
{
"_id": "_design/tagcount",
"_rev": "1-d14c9d06e652ad23df1044ffbca9d85f",
"views": {
"count": {
"reduce": "_count",
"map": "function (doc) {\n if(doc.type== 'post') { \n for(var i = 0, l= doc.tags.length; i < l; i++) { emit(doc.tags[i], 1); } } \n}"
}
},
"language": "javascript"
}
{
“_id”:“_设计/标记计数”,
“修订版”:“1-d14c9d06e652ad23df1044ffbca9d85f”,
“意见”:{
“计数”:{
“减少”:“\u计数”,
“映射”:“函数(doc){\n如果(doc.type='post'){\n for(var i=0,l=doc.tags.length;i
此外,还需要指定reduce:
http://localhost:5984//_design//_view/?limit=20&reduce=true&group=true
注意:用它们的实际值替换它们。有没有办法让它们退货?因此,首先返回使用较多的“标记”吗?实际上,在map和reduce中的排序仅按键进行。除了内存排序之外,您还可以尝试Mango查询。有没有办法让它们按顺序返回?因此,首先返回使用较多的“标记”吗?实际上,在map和reduce中的排序仅按键进行。除了内存排序之外,您还可以尝试Mango查询。