从 Couchbase 获取每个文档类型的样本

Get a sample of each doctype from Couchbase

我正在使用 Couchbase 存储桶,其中所有文档都保存有一个 DocType 属性,用于标识包含的数据类型。我想执行一个查询,每个 DocType 都会给我一个结果,以用作所有文档类型的样本。

我可以使用 SELECT DISTINCT(DocType) FROM some-database 获取每个 DocType。我可以通过 SELECT * FROM some-database WHERE DocType='User' LIMIT 1 获得样本。但我不知道如何将这些东西结合起来,使单个查询 return 来自每个匹配的 DocType 的单个示例。

可以使用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);