Составной ключ с CouchDB, поиск нескольких записей - PullRequest
5 голосов
/ 29 мая 2011

Я знаю, что вы можете передать ключ или диапазон для возврата записей в CouchDB, но я хочу сделать что-то подобное. Найдите X записей, которые являются значениями X.

Так, например, в обычном SQL, допустим, я хотел вернуть записи с идентификаторами 5, 7, 29, 102 . Я бы сделал что-то вроде этого:

SELECT * FROM sometable WHERE id = 5 OR id = 7 or id = 29 or id = 102

Возможно ли это сделать в CouchDB, где я выбрасываю все значения, которые я хочу найти в массиве ключей, а затем CouchDB ищет все те записи, которые могут существовать в «параметре ключа»

Ответы [ 2 ]

4 голосов
/ 29 мая 2011

Вы можете сделать POST , как описано на CouchDB wiki .Вы передаете список ключей в теле запроса.

{"keys": ["key1", "key2", ...]}

Недостатком является то, что запрос POST не кэшируется браузером.

В качестве альтернативы, вы можете получить тот же ответиспользуя GET с параметром keys.Например, вы можете запросить представление _all_docs с помощью:

/DB/_all_docs?keys=["ID1","ID2"]&include_docs=true

, которое при правильном кодировании URL становится:

/DB/_all_docs?keys=%5B%22ID1%22,%22ID2%22%5D&include_docs=true

, что должно улучшить кэширование, но имейте в виду, что_all_docs изменяется при каждом обновлении документа.Иногда вы можете обойти это, определив свое собственное представление только с необходимыми документами.

2 голосов
/ 29 мая 2011

С функцией прямого обзора это будет невозможно. Однако вы можете использовать функцию _list для достижения того же результата.

...