Cosmos DB查询元素计数

时间:2019-07-16 02:28:00

标签: azure-cosmosdb azure-cosmosdb-sqlapi

我想找到一个元素发生了多少次,我想从样本中获取元素计数。如果我们看到数据。元素出现两次,像Name这样的内部元素出现两次。这样,我想找到元素出现的次数。

我尝试查看group by子句,但在CosmosDB中找不到任何group by选项。

{“数据”:[[{{元素“:[{”名称“:”马“,”性别“:”男性“,”城市“:”纽约“,”州“:”纽约“}, {“性别”:“女性”,“城市”:“洛杉矶”,“州”:“加利福尼亚”}},{“名称”:“布鲁斯”,“性别”:“男性”,“城市”:“芝加哥” “}],”细分“:[{”低“:” 20“,”块“:” 227“,”子代码“:” MIRROR“,” Legal_Desc_Map_Plat_Type_Indicator“:” PLA“}],”元素“:[{ “名称”:“马”,“性别”:“男性”,“城市”:“纽约”},{“性别”:“女性”,“城市”:“洛杉矶”,“州”:“加利福尼亚州” },{“名称”:“布鲁斯”,“性别”:“男性”,“州”:“伊利诺伊州”}]}]],“ _ts”:1559463991}

结果类似。 Element = 2,Element.Name = 2等等。

See screen for some info

1 个答案:

答案 0 :(得分:0)

首先,您的屏幕快照是不可能的。Elements键不能在单个对象中重复。

您的要求可以通过COUNT聚合函数来实现。

对于元素:

SELECT value(count(data.Elements))
FROM c
join data in c.data

结果:

enter link description here

姓名:

SELECT value(count(elem.Name))
FROM c
join data in c.data
join elem in data.Elements

结果:

enter image description here


为您的进一步需求:

由于WHERE子句中不允许聚合,

enter image description here

也许您需要自己处理结果。 Group By自然不受支持(enter image description here),但是您可以基于DocumentDb存储过程了解一个很棒的软件包feedback。您可以计算elements并按其他列进行分组,例如id