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

能否在CosmosDB中筛选嵌套数组项?示例:仅保留客户信息及首个宠物

在Cosmos DB中筛选数组项,仅保留首个宠物的实现方法

当然可以做到!针对你想要保留客户信息并只保留其pets数组中首个宠物的需求,用Cosmos DB的SQL查询就能轻松实现,核心是用到ARRAY_SLICE函数来截取数组的指定元素。

具体查询语句

SELECT 
    c.CustomerId,
    c.name,
    c.lastName,
    ARRAY_SLICE(c.pets, 0, 1) AS pets
FROM c

语句解释

  • ARRAY_SLICE是Cosmos DB专门用于数组截取的函数,参数分别为:
    1. 目标数组:这里是c.pets,即客户的宠物数组
    2. 起始索引:从0开始(数组索引默认从0算起)
    3. 截取长度:1表示只取1个元素,也就是数组的第一个宠物

执行这个查询后,就能得到你预期的结果:

[ { "CustomerId": "100", "name": "John", "lastName": "Doe", "pets": [ { "id": "pet01", "CustomerId": "100", "name": "1st pet" } ] } ]

扩展说明

如果之后你需要的不是取首个元素,而是筛选符合特定条件的数组项(比如名字包含某个关键词的宠物),可以结合ARRAY()和子查询来实现,示例如下(仅供参考):

SELECT 
    c.CustomerId,
    c.name,
    c.lastName,
    ARRAY(SELECT * FROM p IN c.pets WHERE p.name = '1st pet') AS pets
FROM c

不过针对你当前的需求,ARRAY_SLICE是最简洁高效的方案。

内容的提问来源于stack exchange,提问作者Mojtaba Khooryani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:13:01