Как отфильтровать представление, используя сложный запрос - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь отфильтровать представление, которое генерирует bookName и bookItem.

emit ([doc.basicInfo.bookName, doc.basicInfo.bookItem], 1);

это даетНиже приведен результат без запроса:

{"total_rows”:10,”offset":0,"rows":[
{"id":"d4e5548fb01e6e2c559e702fe7b138ad","key":["correctaccouts","billing"],"value":1},
{"id":"863c46c645b6344719a08231606f2a7d","key":["credeaccount","system"],"value":1},
{"id":"68d39e64c406127960dc735e8167eee3","key":["credeaccount11","system"],"value":1},
{"id":"1ab4d31588d76a42e85b526a316074de","key":["mayankamazon","billing"],"value":1},
{"id":"3204f5db5df91886373f95995ce09a2d","key":["mayankazure","asset"],"value":1},
{"id":"452c040048fb2b779205b3785615d368","key":["mayankmaaa","system"],"value":1},
{"id":"23f01f7bc60c2c8f24f6b741584a69fa","key":["TEST_AWS_Delete212sss12","asset"],"value":1},
{"id":"f0093f474e0d50f046b9fdc9145bdc91","key":["vijeth-myteam111115555555","asset"],"value":1},
{"id":"c3bce8dd1482d841f445fbd617ba1db7","key":["vijeth-myteam11111555sss5555","asset"],"value":1},
{"id":"347479ba91696b73f4a57252cd00a358","key":["vijeth-myteamOnly","asset"],"value":1}
]}

Теперь я пытаюсь выполнить запрос с использованием сложных ключей:

satrtkey = [{}, "asset"] & endkey = [{},"asset"]

Он должен вернуть мне:

{"total_rows”:5,”offset":0,"rows":[
{"id":"3204f5db5df91886373f95995ce09a2d","key":["mayankazure","asset"],"value":1},
{"id":"23f01f7bc60c2c8f24f6b741584a69fa","key":["TEST_AWS_Delete212sss12","asset"],"value":1},
{"id":"f0093f474e0d50f046b9fdc9145bdc91","key":["vijeth-myteam111115555555","asset"],"value":1},
{"id":"c3bce8dd1482d841f445fbd617ba1db7","key":["vijeth-myteam11111555sss5555","asset"],"value":1},
{"id":"347479ba91696b73f4a57252cd00a358","key":["vijeth-myteamOnly","asset"],"value":1}
]}

Но он все равно дает мне все 10 записей.Я хочу фильтровать только записи типа "актив".

1 Ответ

0 голосов
/ 29 января 2019

Чтобы использовать ключевые диапазоны, вы должны сузить свое исследование, начиная с левых полей до правых.

Например, если ваш ключ будет: [doc.basicInfo.bookItem,doc.basicInfo.bookName]

Вы можетепоиск с start_key=["asset",null]&end_key=["asset",{}]

Также , ваш текущий запрос эквивалентен key=[{},"asset"].Вместо этого вы должны были попробовать: start_key=[null,"asset"]&end_key=[{},"asset"], но это не должно работать.

Пример

Просмотр:

function (doc) {
  emit([doc.basicInfo.bookItem,doc.basicInfo.bookName], 1);
}

Запрос:

http://localhost:5984/<db>/_design/<design_name>/_view/<view_name>?include_docs=true&inclusive_end=true&start_key=%5B%22asset%22%2Cnull%5D&end_key=%5B%22asset%22%2C%7B%7D%5D
...