我正在测试CouchDB v2.3.1,但无法理解特定结果。
这是通过自定义视图过滤的当前数据库状态:
curl 'http://127.0.0.1:5984/music/_design/albums/_view/_by_name' | json_pp
{
"offset" : 0,
"total_rows" : 3,
"rows" : [
{
"id" : "42dc72485892b5de28807f28130016c6",
"value" : {
"by" : "The Beatles",
"album" : {
"title" : "Abbey Road",
"year" : 1969
}
},
"key" : "Abbey Road"
},
{
"value" : {
"album" : {
"year" : 1965,
"title" : "Help!"
},
"by" : "The Beatles"
},
"key" : "Help!",
"id" : "42dc72485892b5de28807f28130016c6"
},
{
"id" : "42dc72485892b5de28807f28130016c6",
"value" : {
"by" : "The Beatles",
"album" : {
"title" : "Sgt. P",
"year" : 1967
}
},
"key" : "SGt. P"
}
]
}
如您所见,我有3行(甲壳虫专辑),其键是专辑名称。
现在,以下查询返回的偏移量为1。如上所示,没有行具有名为“ Hel!”的键。请注意,我正在使用key="Hel!"
查询参数
curl 'http://127.0.0.1:5984/music/_design/albums/_view/_by_name?key="Hel!"' | json_pp
{
"offset" : 1,
"total_rows" : 3,
"rows" : []
}
现在,以下查询返回的偏移量为2。如上所示,没有行包含名称为“ No-such-namea!”的键。
curl 'http://127.0.0.1:5984/music/_design/albums/_view/_by_name?key="No-such-namea"' | json_pp
{
"rows" : [],
"total_rows" : 3,
"offset" : 2
}
来自this的答案:
偏移量是给定查询的第一个匹配行的视图中的索引
我知道,如果存在匹配项,则偏移量应为未过滤视图中返回的行中第一个匹配项的索引。
因此,我不理解为什么在前两个示例中偏移量不为0。
谢谢您的时间。
答案 0 :(得分:0)
Uminder让我注意到答案是在我提供的相同链接中给出的。
”如果视图中没有用于直接键查询的条目,则 offset值是进入视图的索引(如果存在) 有所需的密钥。”