我有一个容器,里面有大约 9000 个这样的文档(为简洁起见,进行了简化):
{
"id": "111",
"productid": "111"
"data": {
"Channel": "All",
"Headline": [
{
"Culture": "en",
"Value": "English name"
},
{
"Culture": "da",
"Value": "Danish name"
}
]
}
}
如果我想获得 DISTINCT
Channel
值,那么我可以这样做:
SELECT DISTINCT VALUE c.data.Channel FROM c
此查询花费了我约 5 RU,并且不检索任何文档,但为我提供了我需要的值。
如果我想获取所有 DISTINCT
Culture
值,那么类似的查询不会返回任何内容:
SELECT DISTINCT VALUE c.data.Headline.Culture FROM c
我可以更改该查询以加入标题,并获得我想要的结果:
SELECT DISTINCT VALUE h.Culture FROM c JOIN h IN c.data.Headline
但是,上述查询成本约为 4800 RU,并在幕后检索所有 9000 个文档。即使所有属性都在文档中建立了索引。
有没有办法让这个 DISTINCT 适用于对象数组上的属性?
或者我是否必须添加一个新的
data.HeadlineCultures[]
字符串数组,然后使用它?
更新:我刚刚尝试创建一个
data.HeadlineCultures[]
字符串数组,它与复杂数组对象具有完全相同的问题,所以这不是解决方案。
您可以直接使用以下查询,而不是使用
JOIN
。
SELECT distinct value h.Culture FROM h IN c.data.Headline
在服用之前。
服用后明显。