如何在 cosmos-db 中的数组列上使用聚合函数

How to use an aggregate function on an array column in cosmos-db

我有一个 cosmos 项目:-

{
  "id": "123,
  "meta": "ancdkjlerlh"
  "reason": [
        "reason1",
        "reason2"
    ],
  "status": "REJECTED"
}

我需要找到每个原因的项目数。

我试过这样的方法:-


SELECT count(1) as CountOfRejected, 
c.reason
FROM c
WHERE c.status= "REJECTED"
GROUP BY c.reason

将整个原因数组视为一个整体。 ARRAY_CONTAINS 方法需要在 GROUP BY 子句中使用第二个参数,我认为这一次需要 1 个原因。有没有办法像 SQL 那样在单个查询中执行此操作? 我想要这种格式的结果

         Reason | CountOfRejected |
        --------------------------
        Reason 1 | 10
        Reason 2 | 5
        Reason 3 | 7
      

您可以使用以下SQL:

SELECT 
    COUNT(r) as CountOfRejected,r as Reason 
FROM c JOIN r IN c.reason 
WHERE c.status= "REJECTED" 
GROUP BY r

结果:

[
    {
        "CountOfRejected": 1,
        "Reason": "reason3"
    },
    {
        "CountOfRejected": 1,
        "Reason": "reason2"
    },
    {
        "CountOfRejected": 2,
        "Reason": "reason1"
    }
]