Cypher创建带标签属性新节点时属性类型错误问题求助
问题背景
执行的Cypher语句:
MATCH (el)<-[]-(t:ns1__Terminal)-[]->(cn:ns1__ConnectivityNode) MERGE (e:pp__Element{label:el1}) RETURN e1
报错信息:
"Property values can only be of primitive types or arrays thereof"
错误原因
- 语句存在两处语法错误触发该报错:
- 定义
pp__Element节点的label属性时,直接使用了未声明的变量el1,既没有用引号包裹为字符串字面量,也不属于前面MATCH语句匹配到的有效变量,Cypher无法将其识别为合法的基本类型属性值,符合报错提示的类型校验规则。 - MERGE语句声明的节点变量为
e,RETURN语句调用了不存在的变量e1,属于变量名不匹配错误。
- 定义
解决方案
根据实际业务需求选择对应修正方案即可:
方案1:label属性需设为固定字符串el1
MATCH (el)<-[]-(t:ns1__Terminal)-[]->(cn:ns1__ConnectivityNode) MERGE (e:pp__Element{label: 'el1'}) RETURN e
说明:给字符串值加单引号/双引号包裹,同时修正RETURN的变量名为e即可正常运行。
方案2:label属性需复用前面MATCH到的el节点的属性值
如果需要把el节点的某个属性赋值给新节点的label,参考以下写法(示例取el的name属性,可替换为实际需要的属性名):
MATCH (el)<-[]-(t:ns1__Terminal)-[]->(cn:ns1__ConnectivityNode) MERGE (e:pp__Element{label: el.name}) RETURN e
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

