如何通过过滤对象名称,使用N1QL访问嵌套对象并获取指定结果
如何通过对对象名称应用过滤条件,使用N1QL访问嵌套对象?
示例JSON
{ "id":"idValue", "rank":{ "1":{ "city":"Mumbai" }, "2":{ "city":"Delhi" } }, "KEY":"RANK" }
预期结果
获取KEY="RANK"的文档中排名最高的城市,输出如下:
[ { "id":"idValue", "city":"Delhi" } ]
查询语句
SELECT b.id, (SELECT p.val FROM OBJECT_PAIRS(b.rank) p WHERE `p`.`name` = (SELECT to_string(MAX(TONUMBER(v))) FROM OBJECT_NAMES(b.rank) v)) FROM `rating` b WHERE b.KEY = 'RANK'
语句说明
- 外层查询先过滤出
KEY等于'RANK'的目标文档 - 通过
OBJECT_NAMES(b.rank)提取rank对象的所有键(即排名数字),将其转为数值后取最大值,再转回字符串作为匹配条件 - 利用
OBJECT_PAIRS(b.rank)把rank对象拆分为键值对集合,筛选出键等于最大排名的项,提取对应的城市信息
内容的提问来源于stack exchange,提问作者Paranav
相关产品推荐
相关产品推荐

