Лично я бы фильтровал на стороне клиента, пока у меня не возникли проблемы с производительностью. Затем я бы, вероятно, использовал _filter
технику Тедди - все довольно стандартные вещи CouchDB.
Однако я наткнулся (ИМО) на элегантный способ найти набор дополнений. Я описал это при изучении как найти документы отсутствует поле .
Основная идея
Нахождение нечленов вашего взгляда, очевидно, невозможно сделать простым запросом (и простым сканированием индекса). Однако , это можно сделать в постоянной памяти, и линейное время, путем одновременной итерации двух результатов запроса одновременно.
Один запрос для всех возможных идентификаторов документов. Другой запрос предназначен для соответствующих документов (тех, которые вы не хотите). Важно отметить, что CouchDB сортирует результаты запроса , поэтому вы можете эффективно рассчитать дополнение.
Смотрите мои данные в предыдущем вопросе. Основная идея заключается в том, что вы выполняете итерацию по обоим (отсортированным) спискам одновременно, и когда вы говорите «эй, этот идентификатор документа указан в полном наборе, но отсутствует в подмножестве, что является хитом.
(Вам не нужно запрашивать _all_docs, вам просто нужно два запроса к CouchDB: один возвращает все возможные значения, а другой возвращает не для подсчета.)