在Cosmos SQL API中如何查询同orderNumber下的所有productNumber?
解决方案
直接使用Cosmos SQL API内置的ARRAY_AGG聚合函数即可实现分组后收集同组内指定字段的所有值,正确查询语句如下:
SELECT c.orderNumber, ARRAY_AGG(c.productNumber) AS products FROM c GROUP BY c.orderNumber
语句说明
ARRAY_AGG()是Cosmos SQL提供的聚合函数,作用是将分组内所有匹配的字段值聚合为一个数组- 如果需要对同订单下的重复产品编号去重,可以调整为
ARRAY_AGG(DISTINCT c.productNumber) AS products
返回结果示例
执行上述语句后会返回符合需求的结构:
[ { "orderNumber": 1, "products": ["p1", "p2"] }, { "orderNumber": 2, "products": ["p3"] } ]
如果确实需要将products字段调整为对象结构,可在拿到查询结果后通过业务代码做二次转换,Cosmos SQL原生暂不支持直接聚合为自定义键值对的对象结构。
内容的提问来源于stack exchange,提问作者Sajan Legend
相关产品推荐
相关产品推荐

