Neo4j Cypher查询语言中的子查询
我想为我正在进行的项目写一个创建关系语句。声明必须是这样的Neo4j Cypher查询语言中的子查询,neo4j,subquery,Neo4j,Subquery,我想为我正在进行的项目写一个创建关系语句。声明必须是这样的 CREATE (match (p:Halt) where p.name="Ananda College" return p)-[:next_halt {route:['103'],dist:1.45}]->(MATCH (p:Halt) where p.name="Borella" return p) 如您所见,我希望开始节点和结束节点的值来自另一个CQL语句。 但是当我运行这个查询时,似乎出现了语法错误。我已经阅读了一些教程,
CREATE (match (p:Halt) where p.name="Ananda College" return p)-[:next_halt {route:['103'],dist:1.45}]->(MATCH (p:Halt) where p.name="Borella" return p)
如您所见,我希望开始节点和结束节点的值来自另一个CQL语句。
但是当我运行这个查询时,似乎出现了语法错误。我已经阅读了一些教程,看看我的问题出在哪里,但作为一个初学者,我真的说不出来
Invalid input '(': expected whitespace, comment, node labels, MapLiteral, a parameter, ')' or a relationship pattern (line 1, column 15 (offset: 14))
"CREATE (match (p:Halt) where p.name="Ananda College" return p)-[:next_halt {route:['103'],dist:1.45}]->(MATCH (p:Halt) where p.name="Borella" return p)"
你的语法在这里很混乱。请重新阅读dev文档,也许可以查看Cypher备忘单 至于正确的语法,你甚至不需要嵌套来得到你想要的。首先,在开始和结束节点上进行匹配,然后可以在查询的其他部分使用绑定变量,例如创建关系:
MATCH (start:Halt), (stop:Halt)
WHERE start.name = "Ananda College" AND stop.name="Borella"
CREATE (start)-[:next_halt {route:['103'], dist:1.45}]->(stop)
如果您不确定节点(或关系)是否存在,可以改用MERGE,它将在现有节点(或关系)上匹配,或者在不存在的情况下创建它们。我不确定您是从哪里找到该语法的,但您可以在Cypher上找到广泛的入门知识。