Couchdb视图不适用于多个过滤器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Couchdb视图不适用于多个过滤器相关的知识,希望对你有一定的参考价值。

Couchdb视图文档不适用于多个过滤器。

这些是我的示例文档

{
  "_id": "test_1234",
  "_rev": "1-ff074e2f5a6e1c4e036703524fcebca3",
  "data": {
    "userid": 1,
    "year": 1989,
    "name": "Aro",
    "type": "test"
  }
}

{
  "_id": "test_1235",
  "_rev": "1-bb86f782333c1510391f3b54d9d3a6ad",
  "data": {
    "userid": 2,
    "year": 1990,
    "name": "Babu",
    "type": "test"
  }
}

{
  "_id": "test_1236",
  "_rev": "1-02f1b6b9dcbadcad88160d996a1c4361",
  "data": {
    "userid": 3,
    "year": 1989,
    "name": "Siva",
    "type": "test"
  }
}

这是我的查看文档

 {
  "_id": "_design/testview",
  "_rev": "4-53e5fcd4dedc4e02e26844ceea70a018",
  "views": {
    "testview": {
      "map": "function (doc) {if(doc.data.type === \"test\")  emit([doc.data.userid,doc.data.year,doc.data.name], null);}"
    }
  },
  "language": "javascript"
}

所以我的查看结果如下所示

{"total_rows":3,"offset":0,"rows":[
{"id":"test_1234","key":[1,1989,"Aro"],"value":null},
{"id":"test_1235","key":[2,1990,"Babu"],"value":null},
{"id":"test_1236","key":[3,1989,"Siva"],"value":null}
]}

lhbwfjewbfj wfwfwejf bwefw whj ffbjhkwv hfv wevwvweh vhvf

我需要为以下参数过滤文档

userid:1到3:1989name:Aro

所以我有如下所示的创建查询

viewtest / _design / testview / _view / testview?startkey = [1,1989,“ Aro”]&endkey = [3,1989,“ Aro \ ufff0”]

我对此的预期输出

{"total_rows":3,"offset":0,"rows":[
{"id":"test_1234","key":[1,1989,"Aro"],"value":null}
]}

但是实际输出是

{"total_rows":3,"offset":0,"rows":[
{"id":"test_1234","key":[1,1989,"Aro"],"value":null},
{"id":"test_1235","key":[2,1990,"Babu"],"value":null}
]}

为什么?我的代码有什么问题?

答案

键遵循简单的ordered collation,因此startkey=[1,...]endkey=[3,...]匹配所有的键,例如[2,...]。由于2大于1且小于3,因此不需要比较次要元素。

如果要在多个元素上过滤结果,则可能要使用mango queries

以上是关于Couchdb视图不适用于多个过滤器的主要内容,如果未能解决你的问题,请参考以下文章

Android列表视图不适用于片段

如何使用 javascript 在 couchdb 中使用多个组合键进行查询,而无需为每个组合编写单独的视图?

adjustResize 不适用于片段布局内的 EditText 视图

上下文菜单不适用于两个片段

复制不适用于包含音频/视频文件的 CouchDB 数据库

过滤器集字段不适用于多个对象