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

Azure Cosmos DB嵌套数组查询:如何筛选含test-1标签的记录

Azure Cosmos DB嵌套数组查询解决方案

针对你的需求,这里提供两种常见场景的查询写法:

1. 查询包含目标标签的完整文档

如果需要找出所有**存在Fees子项且其Tags包含"test-1"**的完整文档,可使用EXISTS结合子查询遍历嵌套数组:

SELECT *
FROM c
WHERE EXISTS(
    SELECT VALUE f
    FROM f IN c.Fees
    WHERE ARRAY_CONTAINS(f.Tags, "test-1")
)

2. 仅提取Fees数组中符合条件的元素

如果只需要获取Fees数组里那些Tags包含"test-1"的子项,有两种实现方式:

方式一:直接返回符合条件的Fees子项

SELECT f
FROM c
JOIN f IN c.Fees
WHERE ARRAY_CONTAINS(f.Tags, "test-1")

方式二:保留原文档结构,仅过滤Fees数组

如果需要保留文档的其他字段(如id、PartitionKey),同时只保留符合条件的Fees元素:

SELECT c.id, c.PartitionKey, ARRAY(
    SELECT VALUE f
    FROM f IN c.Fees
    WHERE ARRAY_CONTAINS(f.Tags, "test-1")
) AS Fees
FROM c
WHERE EXISTS(
    SELECT VALUE f
    FROM f IN c.Fees
    WHERE ARRAY_CONTAINS(f.Tags, "test-1")
)

关键函数说明

  • ARRAY_CONTAINS:用于检查数组是否包含指定元素,这里用来判断单个Fees项的Tags数组是否存在"test-1"
  • EXISTS:通过子查询判断是否存在符合条件的Fees项,用于筛选目标文档
  • JOIN:展开嵌套的Fees数组,允许单独处理每个数组元素
  • ARRAY():将子查询结果重新组合为数组,实现对原Fees数组的过滤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:55:16