You need to enable JavaScript to run this app. 如何编写COSMOS DB查询语句提取数组元素的指定字段
优惠活动
大模型
产品
解决方案
定价
更多

如何编写COSMOS DB查询语句提取数组元素的指定字段

Cosmos DB 数组字段提取指定属性查询方案

核心实现方法

使用Cosmos DB SQL API内置的ARRAY_MAP函数遍历数组并重构每个元素的属性,是性能最优的实现方式,无需展开数组再做聚合操作。

完整查询示例

如果你需要保留文档的其他原有字段,仅重构details数组的结构,查询语句如下:

SELECT 
    c.*,
    ARRAY_MAP(
        d => {
            "name": d.name,
            "roll_no": d.roll_no
        }, 
        c.details
    ) AS details
FROM c

注意:如果你不需要保留文档的其他原有字段,把c.*替换为你需要返回的指定字段即可。

可选增强:过滤无效元素

如果需要排除details数组中缺少name或roll_no属性的无效元素,可以组合使用ARRAY_FILTER函数:

SELECT 
    c.*,
    ARRAY_MAP(
        d => {
            "name": d.name,
            "roll_no": d.roll_no
        }, 
        ARRAY_FILTER(
            d => IS_DEFINED(d.name) AND IS_DEFINED(d.roll_no),
            c.details
        )
    ) AS details
FROM c

输出效果

上述查询返回的details数组会完全匹配需求结构,每个元素仅保留name和roll_no两个属性,其余属性会被自动剔除。

内容的提问来源于stack exchange,提问作者shashank shekhar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 16:21:04