如何获取agtype类型顶点属性courses列表的长度?
获取AG顶点中数组属性的长度
你用ARRAY_LENGTH无效的原因是:courses是Apache AGE的agtype类型数组,并非PostgreSQL原生数组,所以原生数组函数无法直接处理。针对这种情况,有两种简单的解决方式:
方法1:Cypher内置size()函数(推荐)
直接在Cypher查询里用size()函数,它专门用来计算数组、集合的长度:
test=# SELECT * FROM cypher('graph', $$ MATCH (s:student {name: "Muneeb"}) RETURN size(s.courses) AS course_count $$) as (course_count agtype);
执行结果:
course_count -------------- 4 (1 row)
方法2:SQL层面用ag_array_length()函数
如果需要在SQL逻辑中处理,可以借助AGE提供的ag_array_length()函数,先提取出courses属性再计算长度:
test=# SELECT ag_array_length((student->>'properties'->>'courses')::agtype, 1) AS course_count FROM cypher('graph', $$ MATCH (s:student {name: "Muneeb"}) RETURN s $$) as (student agtype);
这里第二个参数1指定数组维度(当前是一维数组),执行后同样会返回数组长度4。
内容的提问来源于stack exchange,提问作者Muneeb Khan
相关产品推荐
相关产品推荐

