Couchdb 对特定类型的文档进行计数(之前针对用户进行筛选)
文件(省略伪版本、版本和id): 我想知道steve有多少类型为1/2/3的文档 视图: 现在我请求Couchdb 对特定类型的文档进行计数(之前针对用户进行筛选),couchdb,mapreduce,Couchdb,Mapreduce,文件(省略伪版本、版本和id): 我想知道steve有多少类型为1/2/3的文档 视图: 现在我请求 /database/_design/myDesign/_view/count?key=["steve",1] // result: 2 /database/_design/myDesign/_view/count?key=["steve",2] // result: 1 /database/_design/myDesign/_view/count?key=["steve",3] // resul
/database/_design/myDesign/_view/count?key=["steve",1] // result: 2
/database/_design/myDesign/_view/count?key=["steve",2] // result: 1
/database/_design/myDesign/_view/count?key=["steve",3] // result: 3
这个工作得非常好
为了让事情变得更聪明,我想知道我是否可以用一种观点来质疑这一点
有没有一种方法可以计算一个视图中未知类型文档的数量?您可以使用这样的主体发布到视图中
{"keys":[["steve",1], ["steve",2]]}
另外,尝试使用“\u sum”作为reduce函数,它将在Erlang中本机运行,速度应该比在Javascript中快几倍。您可以执行范围查询来实现这一点:
.../count?startkey=["steve",1]&endkey=["steve",3]&group=true&reduce=true
这将为
[“steve”,1]
和[“steve”,3]
之间的每个键提取一行。您可以根据实际类型调整值0
和3
。例如,如果您的类型可以是任何标量值,则可以使用[“steve”,null]
和[“steve”,{}]
作为范围边界。+1查找steve的所有类型的一个优点。一旦有数百或数千种类型,这可能是一个问题;但我怀疑在实际应用程序中很少有可管理的。当然,但人们通常喜欢免费获得2倍以上的性能改进P
{"keys":[["steve",1], ["steve",2]]}
.../count?startkey=["steve",1]&endkey=["steve",3]&group=true&reduce=true