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

如何在Azure Cosmos DB中查询嵌套JSON的指定数组数据

Azure Cosmos DB 过滤嵌套数组子项解决方案

你之前用ARRAY_CONTAINS(c.items, {"arr_id": 1},true)只能筛选出包含目标子项的完整文档,但不会对items数组本身做过滤——这是因为这个函数的作用只是判断数组里有没有匹配元素,用来过滤文档,而非修改数组内容。

要实现保留arr_id=1的子项同时返回原文档结构,需要结合JOIN和ARRAY()函数来构建过滤后的数组:

SELECT 
    c.id,
    ARRAY(SELECT * FROM item IN c.items WHERE item.arr_id = 1) AS items
FROM c
WHERE ARRAY_CONTAINS(c.items, {"arr_id": 1}, true)

说明:

  • JOIN item IN c.items 遍历items数组里的每一个子项
  • WHERE item.arr_id = 1 筛选出符合条件的子项
  • ARRAY(...) AS items 把筛选后的子项重新组装成数组,替换原items字段
  • 外层的WHERE ARRAY_CONTAINS(...) 可以先过滤掉完全没有匹配子项的文档,提升查询效率

执行这个查询后,返回的结果就会和你预期的一致:只保留items中arr_id=1的子项,同时保留原文档的id字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 15:45:34