如何检查field-to-find是否存在于my-map的任一映射值中?
检查映射值中是否存在指定字段
数据结构
"my-map": { "my-key1": { "field-to-find": {} }, "my-key2": { "field-to-find": {} }, "my-key3": {} }
需求
我希望检查field-to-find是否存在于my-map的任一值中,请问这是否可行?
已尝试的方法
- 使用
my-map.exists(i, has(i.field-to-find))——无法生效,因为i仅返回映射的键,而非值 - 使用
my-map.exists(i, has(my-map.i.field-to-find))——无法生效,因为i被视为字符串,是否有方法将其作为变量引用?
解决方案
可行,你可以通过直接遍历映射的值集合来实现,不用纠结键的问题,推荐两种写法:
若你的查询环境支持
values()方法(比如部分JSON查询框架):my-map.values().exists(v, has(v.field-to-find))values()会提取my-map里的所有值对象,v代表每个值,直接检查它是否包含field-to-find字段即可。用通配符
*直接访问所有子值:my-map.*.field-to-find.exists()这个写法会遍历
my-map下的所有子对象,只要其中任意一个存在field-to-find字段,就会返回true。
内容的提问来源于stack exchange,提问作者helpmeplease
相关产品推荐
相关产品推荐

