嵌套ComplexType场景下如何编写正确筛选语句查询tag值匹配的文档
问题原因
你的OData筛选语句使用any运算符时语法不符合规范:any定义的lambda变量作用域内,应该直接引用临时变量访问元素属性,不允许重复写集合的完整父路径。你原有写法中tagdata/tags是复杂类型集合,本身不是单个对象,直接访问tagdata/tags/tag属性自然会触发「属性访问的父值不是单个值」的报错。
修正后的筛选语句
要实现筛选tagdata/tags中存在至少一个tag等于text1的文档,修正后的语句如下:
search=*&$filter=tagdata/tags/any(t: t/tag eq 'text1')
语法说明
any()括号内t是你为集合tagdata/tags的单个元素自定义的临时变量名- 冒号右侧直接通过
t/tag访问单个元素的tag属性进行匹配判断
扩展场景参考
如果需要筛选同时包含多个指定tag的文档,可叠加多个any条件:
search=*&$filter=tagdata/tags/any(t: t/tag eq 'text1') and tagdata/tags/any(t: t/tag eq 'text2')
内容的提问来源于stack exchange,提问作者kevin
相关产品推荐
相关产品推荐

