如何在Cosmo DB中筛选Targets数组同时含指定双值的Drill文档
Cosmos DB 筛选数组同时包含多个指定元素的文档
要筛选Targets数组中**同时包含"Power"和"Static Strength"**的Drill文档,你之前用的ARRAY_CONTAINS(["Power","Static Strength"], t)是“或”逻辑(满足任一即可),要实现“且”逻辑可以用下面两种方法:
方法一:多个ARRAY_CONTAINS条件用AND连接
直接分别检查数组是否包含每个目标值,只有同时满足才返回结果:
SELECT * FROM c WHERE c.Targets IS NOT NULL AND ARRAY_CONTAINS(c.Targets, "Power") AND ARRAY_CONTAINS(c.Targets, "Static Strength")
先判断Targets不为空可以避免空数组或null导致的查询错误,确保逻辑严谨。
方法二:用ARRAY_INTERSECT判断交集长度
通过计算原数组和目标值数组的交集,判断交集长度等于需要匹配的元素数量:
SELECT * FROM c WHERE c.Targets IS NOT NULL AND ARRAY_LENGTH(ARRAY_INTERSECT(c.Targets, ["Power", "Static Strength"])) = 2
如果后续需要匹配更多元素,只需要修改ARRAY_INTERSECT的第二个参数数组,并把长度判断值改成对应数量即可。
内容的提问来源于stack exchange,提问作者littlevahn
相关产品推荐
相关产品推荐

