Представление Couchdb не работает для нескольких фильтров - PullRequest
0 голосов
/ 23 декабря 2019

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

Мне нужно отфильтровать документы дляпараметры ниже

идентификатор пользователя : от 1 до 3 год : 1989 имя : Aro

Итак, я создал запрос, как показано ниже

viewtest / _design / testview / _view / testview? Startkey = [1,1989, "Aro"] & endkey = [3,1989, "Aro \ ufff0"]

Myожидаемый результат для этого

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

Почему? Что не так в моем коде?

1 Ответ

0 голосов
/ 24 декабря 2019

Клавиши следуют за простой упорядоченной сортировкой , поэтому startkey=[1,...] и endkey=[3,...] соответствуют всем клавишам, таким как [2, ...]. Поскольку 2 больше 1 и меньше 3, нет необходимости сравнивать менее значимые элементы.

Если вы хотите, чтобы результаты были отфильтрованы по нескольким элементам, вы можете использовать запросы манго .

...