如何在CosmosDB中针对二级JSON属性编写WHERE查询条件?
CosmosDB 查询数组内元素的正确写法
你的查询没结果的原因很直接:Fields是数组类型,直接用c["Fields"]["FieldValue"]根本访问不到数组里的元素属性——这相当于在问整个数组对象有没有FieldValue这个属性,显然没有,所以匹配不到。
给你两种可行的写法:
1. 精确匹配用 ARRAY_CONTAINS
如果只是要匹配FieldValue等于Others的记录,用这个函数效率更高:
SELECT * FROM c WHERE ARRAY_CONTAINS(c.Fields, {"FieldValue": "Others"}, true)
第三个参数true表示部分匹配,不用要求数组元素和第二个参数的对象完全一致,只比对指定的FieldValue字段即可。
2. 复杂条件用 ANY 遍历数组
如果需要模糊匹配(比如用LIKE),或者有多个条件要判断,就用ANY遍历数组里的每个元素:
SELECT * FROM c WHERE ANY f IN c.Fields WHERE f.FieldValue LIKE '%Others%'
要是精确匹配,把LIKE '%Others%'换成= 'Others'就行。
内容的提问来源于stack exchange,提问作者Milo Ulver
相关产品推荐
相关产品推荐

