如何在Cosmos DB中通用查询含failed状态的子项数据
Cosmos DB 查询动态子项中status为'failed'的通用方法
你可以利用Cosmos DB的数组查询能力实现通用筛选,无需手动枚举子项键名,以下是两种实用方案:
方案1:仅筛选包含失败子项的文档
使用ARRAY_CONTAINS配合子查询提取所有子项的status值,判断是否存在'failed':
SELECT * FROM root WHERE ARRAY_CONTAINS(ARRAY(SELECT VALUE c.status FROM c IN root.object_results), 'failed')
这个查询会自动遍历object_results下的所有子项,无需关心子项的数量或键名,只要有任意子项的status为'failed',就会返回该文档。
方案2:筛选文档同时返回失败子项
如果需要在返回结果中单独列出所有失败的子项,可以用子查询筛选并结合ARRAY_LENGTH做判断:
SELECT root.id, ARRAY(SELECT * FROM c IN root.object_results WHERE c.status = 'failed') AS failed_subitems FROM root WHERE ARRAY_LENGTH(ARRAY(SELECT * FROM c IN root.object_results WHERE c.status = 'failed')) > 0
该查询不仅会过滤出包含失败子项的文档,还会将所有符合条件的子项整理到failed_subitems数组中,方便后续处理。
内容的提问来源于stack exchange,提问作者LearneR
相关产品推荐
相关产品推荐

