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

问题描述 投票:2回答:1

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

我可以使用SELECT DISTINCT(DocType) FROM some-database获取每个DocType。我可以通过SELECT * FROM some-database WHERE DocType='User' LIMIT 1获得样本。但是我不知道如何组合这些内容以使单个查询从每个匹配的DocType返回单个示例。

couchbase n1ql
1个回答
2
投票

您可以使用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);
© www.soinside.com 2019 - 2024. All rights reserved.