文件(伪,rev和id省略):
{
"type": 1,
"username": "aron",
"data": { ... }
}
{
"type": 1,
"username": "bob",
"data": { ... }
}
{
"type": 1,
"username": "steve",
"data": { ... }
}
{
"type": 1,
"username": "steve",
"data": { ... }
}
{
"type": 2,
"username": "steve",
"data": { ... }
}
{
"type": 3,
"username": "steve",
"data": { ... }
}
{
"type": 3,
"username": "steve",
"data": { ... }
}
{
"type": 3,
"username": "steve",
"data": { ... }
}
Run Code Online (Sandbox Code Playgroud)
我想知道,有多少1/2/3型史蒂夫文件.
视图:
count: {
map: function (doc) {
emit([doc.username, doc.type], 1);
}
reduce: function (key, values, rereduce) {
return sum(values);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我要求了
/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
Run Code Online (Sandbox Code Playgroud)
这非常有效.
为了聪明,我想知道我是否可以在一个视图中查询?
有没有办法在一个视图中计算未知类型的文档数量?
您可以使用这样的正文POST到您的视图;
{"keys":[["steve",1], ["steve",2]]}
Run Code Online (Sandbox Code Playgroud)
另外,尝试使用"_sum"作为reduce函数,它将在Erlang中本机运行,并且应该比在Javascript中运行快几倍.
您可以执行范围查询来实现此目的:
.../count?startkey=["steve",1]&endkey=["steve",3]&group=true&reduce=true
Run Code Online (Sandbox Code Playgroud)
["steve",1]这将为之间(含)之间的每个键获取一行["steve",3]。您可以根据您的实际类型调整0值3。例如,如果您的类型可以是任何标量值,则可以使用["steve",null]和["steve",{}]作为范围边界。
| 归档时间: |
|
| 查看次数: |
1030 次 |
| 最近记录: |