CouchDB:获取给定密钥范围内的密钥数
在我的CouchDB数据库中,所有键的形式都是“A_uxxxxxxxx”,其中xxxxxxxx是零填充十进制数(例如“A_00000001”或“A_12345678”) 我只想获得给定关键点范围内的关键点数量 例如,要获取从10000000到30000000的密钥,我可以查询如下内容:CouchDB:获取给定密钥范围内的密钥数,couchdb,range,Couchdb,Range,在我的CouchDB数据库中,所有键的形式都是“A_uxxxxxxxx”,其中xxxxxxxx是零填充十进制数(例如“A_00000001”或“A_12345678”) 我只想获得给定关键点范围内的关键点数量 例如,要获取从10000000到30000000的密钥,我可以查询如下内容: GET DATABASE/_all_docs?startkey="A_00001000"&endkey="A_30000000"&include_docs=false 但是结果包含所有键,我需要
GET DATABASE/_all_docs?startkey="A_00001000"&endkey="A_30000000"&include_docs=false
但是结果包含所有键,我需要计算输出的“docs”字段中的元素
因为我的查询中的键的数量将是巨大的,我只想知道键的数量,而不是实际的键列表
范围起始值和范围结束值可以不同,这不是固定的
是否可以只获取给定范围内的键数,而不检索实际的键列表
谢谢,您无法使用内置的
\u all\u docs
视图获取给定密钥范围内的密钥数。但是,使用自定义map reduce视图(如中所述)可以获得所需的结果
map.js
function(doc) {
emit(doc._id, 1);
}
function(keys, values, rereduce) {
return sum(values)
}
reduce.js
function(doc) {
emit(doc._id, 1);
}
function(keys, values, rereduce) {
return sum(values)
}
您可以使用Futon管理实用程序,通过创建包含以下内容的新文档,将这些视图添加到CouchDB数据库中:
{
"_id": "_design/test",
"views": {
"count": {
"map": "function(doc) {\n emit(doc._id, 1);\n}",
"reduce": "function(keys, values, rereduce) {\n return sum(values)\n}"
}
}
}
\u design/test/count
然后可以像查询\u all\u docs
一样进行查询,并返回开始键和结束键之间的文档数
当我在没有开始键和结束键的情况下再次运行此查询时,我得到以下结果:
{
"rows":[
{
"key": null,
"value": 185
}
]
}
{
"rows":[
{
"key": null,
"value": 11
}
]
}
在填充开始键和结束键的情况下再次运行查询,得到以下结果:
{
"rows":[
{
"key": null,
"value": 185
}
]
}
{
"rows":[
{
"key": null,
"value": 11
}
]
}
您无法使用内置的
\u all\u docs
视图获取给定密钥范围内的密钥数。但是,使用自定义map reduce视图(如中所述)可以获得所需的结果
map.js
function(doc) {
emit(doc._id, 1);
}
function(keys, values, rereduce) {
return sum(values)
}
reduce.js
function(doc) {
emit(doc._id, 1);
}
function(keys, values, rereduce) {
return sum(values)
}
您可以使用Futon管理实用程序,通过创建包含以下内容的新文档,将这些视图添加到CouchDB数据库中:
{
"_id": "_design/test",
"views": {
"count": {
"map": "function(doc) {\n emit(doc._id, 1);\n}",
"reduce": "function(keys, values, rereduce) {\n return sum(values)\n}"
}
}
}
\u design/test/count
然后可以像查询\u all\u docs
一样进行查询,并返回开始键和结束键之间的文档数
当我在没有开始键和结束键的情况下再次运行此查询时,我得到以下结果:
{
"rows":[
{
"key": null,
"value": 185
}
]
}
{
"rows":[
{
"key": null,
"value": 11
}
]
}
在填充开始键和结束键的情况下再次运行查询,得到以下结果:
{
"rows":[
{
"key": null,
"value": 185
}
]
}
{
"rows":[
{
"key": null,
"value": 11
}
]
}