如何在Cosmos DB中用集合筛选外部数组,找出不在集合中的项
如何用单条Cosmos DB查询筛选外部数组中不存在于集合的元素
你可以通过结合子查询和NOT EXISTS语句实现单条查询完成需求,不需要将集合数据拉取到代码中处理。可行的查询语句如下:
SELECT value missingItem FROM (SELECT VALUE ["valueA", "valueB"]) AS externalArray JOIN missingItem IN externalArray WHERE NOT EXISTS ( SELECT 1 FROM collectionName c WHERE c.property = missingItem )
逻辑说明
- 首先通过子查询定义你的外部参考数组
externalArray - 使用
JOIN遍历数组中的每一个元素missingItem - 借助
NOT EXISTS子查询检查集合中是否不存在任何文档的property字段等于当前元素,满足该条件的元素即为数组中不存在于集合的目标项
原查询失效原因
Cosmos DB的SQL查询语法确实要求查询的起始点必须是集合(或基于集合的子查询),无法直接从外部数组发起查询关联集合。但通过上述从集合子查询入手的方式,可以绕开这个限制,实现外部数组的反向筛选。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

