我有一个文档结构,它看起来像这样。
{
...
"groupedFieldKey": "groupedFieldVal",
"otherFieldKey": "otherFieldVal",
"filterFieldKey": "filterFieldVal"
...
}
我想获取所有的文档,这些文档在groupedFieldKey上是唯一的。我还想从下面的文档中获取otherField。任何 这些文件的。这 otherFieldKey
从一个文件到另一个文件都有细微的变化,但我可以放心地得到 任何 的这些值。
SELECT DISTINCT groupedFieldKey, otherField
FROM bucket
WHERE filterFieldKey = "filterFieldVal";
这个查询可以获取所有的文档,因为有小的变化。
SELECT groupedFieldKey, maxOtherFieldKey
FROM bucket
WHERE filterFieldKey = "filterFieldVal"
GROUP BY groupFieldKey
LETTING maxOtherFieldKey= MAX(otherFieldKey);
这个查询和预期的一样,但是由于有GROUP BY步骤,所以花费了很长的时间。因为这个查询是用来在UI中显示产品的,所以这不是一个理想的行为。我已经尝试应用索引,但没有快速得到结果。
记录的实际细节。
有没有更好的方法?只在特定字段上获得DISTINCT的方法会很好。
EDIT 1您可以在Couchbase论坛上关注这个讨论主题。https:/forums.couchbase.comtgetting-distinct-on-the-based-of-a-field-with-other-fields26458。
GROUP必须将所有的文件实体化。你可以尝试覆盖索引
CREATE INDEX ix1 ON bucket(filterFieldKey, groupFieldKey, otherFieldKey);