Couchbase中遍历数组对象提取指定键值对的N1QL查询方法
适配的N1QL查询语句
你可以直接使用以下查询实现需求,已适配C对象下键动态生成的场景,且只会提取数组元素的外层Name字段:
SELECT arr_item.Name FROM `你的桶名` b UNNEST OBJECT_PAIRS(b.A.B.C) AS c_pair UNNEST c_pair.val AS arr_item -- 如有文档过滤需求可在下方补充WHERE条件,不需要可直接删除
语句说明
OBJECT_PAIRS(b.A.B.C):将动态生成的C对象转为[ { "name":"D", "val": [数组内容] }, { "name":"E", "val": [数组内容] } ]格式的键值对数组,解决C下键不固定的问题- 第一层
UNNEST展开C的所有键值对,获取每个动态键对应的数组内容 - 第二层
UNNEST展开每个数组的元素,直接通过arr_item.Name获取外层的Name属性,不会和attr数组内的Name字段冲突,二者访问路径完全独立
注意:请将语句中的
你的桶名替换为你实际使用的Couchbase桶名称,如有按文档ID过滤等需求,可补充WHERE META(b).id = "目标文档ID"条件。
内容的提问来源于stack exchange,提问作者PSS
相关产品推荐
相关产品推荐

