Couchdb 对特定类型的文档进行计数(之前针对用户进行筛选)

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

文件(省略伪版本、版本和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] // 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