如何为图数据库节点添加多个标签?Cypher语句报错求解决方案
解决方案:Apache Age中给节点添加多标签的正确写法
你遇到的语法错误是因为Apache Age(PostgreSQL的图扩展)的Cypher实现,在标签操作上和标准Neo4j Cypher存在差异,直接使用:标签的语法不被支持,需要通过labels()函数来管理节点标签。
以下是两种场景的正确实现方式:
1. 创建节点时同时添加多个标签
可以通过先创建单标签节点,再追加第二个标签的方式实现:
SELECT * FROM cypher('menu', $$ CREATE (dal:LENTIL {name:"Dal"}) SET labels(dal) = labels(dal) + ['CURRY'] RETURN dal $$) AS (dal agtype);
也可以直接创建节点后设置完整的标签数组:
SELECT * FROM cypher('menu', $$ CREATE (dal {name:"Dal"}) SET labels(dal) = ['LENTIL', 'CURRY'] RETURN dal $$) AS (dal agtype);
2. 给已有节点添加标签
替换你原来的SET dal:LENTIL写法,改用labels()函数追加标签:
SELECT * FROM cypher('menu', $$ MATCH (dal:CURRY {name: "Dal Makhani"}) SET labels(dal) = labels(dal) + ['LENTIL'] RETURN dal $$) AS (dal agtype);
如果需要替换节点的所有标签(覆盖原有标签),可以直接赋值标签数组:
SET labels(dal) = ['CURRY', 'LENTIL']
验证标签是否生效
执行以下语句可以查看节点的标签列表:
SELECT * FROM cypher('menu', $$ MATCH (dal {name: "Dal"}) RETURN dal, labels(dal) $$) AS (dal agtype, labels agtype);
内容的提问来源于stack exchange,提问作者Bhaskar Sharma
相关产品推荐
相关产品推荐

