Получить образец каждого doctype от Couchbase - PullRequest
2 голосов
/ 30 марта 2020

Я работаю с корзиной Couchbase, где все документы сохраняются с атрибутом DocType, определяющим, какой тип данных содержится. Я хочу выполнить запрос, который даст мне один результат из каждого DocType, чтобы использовать в качестве образца всех типов документов.

Я могу получить каждый DocType, используя SELECT DISTINCT(DocType) FROM some-database. И я могу получить образец, выполнив SELECT * FROM some-database WHERE DocType='User' LIMIT 1. Но я не знаю, как объединить эти вещи, чтобы один запрос возвращал один пример из каждого соответствующего DocType.

1 Ответ

2 голосов
/ 30 марта 2020

Вы можете использовать запрос GROUP.

SELECT MAX(d).*
FROM default AS d
WHERE d.DocType IS NOT NULL
GROUP BY d.DocType;

ИЛИ Сначала получите один ключ документа для другого DocType, используя покрытый индекс, а затем получите эти документы.

CREATE INDEX ix1 ON default(DocType);

SELECT d1.* 
FROM default d1 USE KEYS (
         SELECT RAW MAX(META(d).id)
         FROM default AS d
         WHERE d.DocType IS NOT NULL
         GROUP BY d.DocType);
...