You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Cosmos DB聚合查询返回指定aId的bIds列表及计数?

Cosmos DB 聚合查询:获取指定aId对应的bIds列表与计数

需求说明

给定如下文档结构:

[
  {
    "id": "1",
    "aId": "2",
    "bId": "3"
  },
  {
    "id": "2",
    "aId": "2",
    "bId": "4"
  }
]

需要编写查询,当指定aId(如aId="2")时,返回包含该aId、对应所有bId的数组以及计数的单行JSON,示例响应:

{ 
  "aId": "2",
  "bIds" : ["4","3"],
  "bIds count" : 2
}

正确查询语句

使用GROUP BY结合ARRAY_AGG和COUNT函数可直接实现需求:

SELECT 
    c.aId,
    ARRAY_AGG(DISTINCT c.bId) AS bIds,
    COUNT(DISTINCT c.bId) AS "bIds count"
FROM c
WHERE c.aId = '2' -- 替换为传入的aId参数
GROUP BY c.aId

错误查询分析

你之前尝试的查询存在以下问题:

  1. 未使用聚合逻辑,导致每条匹配的文档生成一行结果,无法将bId合并为数组
  2. 错误的JOIN和子查询写法,导致数组生成语句失效

比如你之前的查询:

select 
 c.aId as aId, 
 count(c2) as bIdCount,
 array(select distinct value c2.bId from c2)
 from c join (select c.bId from c) as c2
 where c.aId = 'SOME_ID'

这里的c2子查询范围错误,且未结合分组逻辑,导致数组生成失败。而ARRAY_AGG是Cosmos DB中生成聚合数组的标准方式,配合GROUP BY能确保返回单行结果。


内容的提问来源于stack exchange,提问作者λjk.jk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 16:36:07