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

问题描述 投票:0回答:1

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}
]}

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

javascript filter view mapreduce couchdb
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.