CouchDB偏移量为1,但查询返回空

时间:2019-09-18 18:24:27

标签: couchdb

我正在测试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。

谢谢您的时间。

1 个答案:

答案 0 :(得分:0)

Uminder让我注意到答案是在我提供的相同链接中给出的。

  

”如果视图中没有用于直接键查询的条目,则   offset值是进入视图的索引(如果存在)   有所需的密钥。”