到目前为止,我认为实现双向关系最直接的方法是将其设置为属性,不能在创建的那一刻就删除方向.例如:
SELECT * FROM cypher ('graph', $$
MATCH (a:Person), (b:Person)
WHERE a.name = "hossam" AND b.name = "omar"
CREATE (a)-[e:FRIENDS]-(b)
RETURN e
$$) as (e agtype);
这将按照您所说的错误返回
ERROR: only directed relationships are allowed in CREATE
LINE 4: CREATE (a)-[e:FRIENDS]-(b)
如果你使用双向边,同样的事情也会发生
SELECT * FROM cypher ('graph', $$
MATCH (a:Person), (b:Person)
WHERE a.name = "hossam" AND b.name = "omar"
CREATE (a)<-[e:FRIENDS]->(b)
RETURN e
$$) as (e agtype);
ERROR: syntax error at or near ">"
LINE 4: CREATE (a)<-[e:BORDERS_WITH]->(b)
你需要try 一下这样的方法:
SELECT * FROM cypher ('graph', $$
MATCH (a:Person), (b:Person)
WHERE a.name = "hossam" AND b.name = "omar"
CREATE (a)-[e:FRIENDS{ type:"<->" }]->(b)
RETURN e
$$) as (e agtype);
通过将"<;->;"指定为属性,您可以使用以下命令搜索图形中的所有双向关系:
SELECT * FROM cypher ('graph', $$
MATCH (a)-[e:FRIENDS]->(b)
WHERE e.type = "<->"
RETURN e
$$) as (e agtype);
由于双向关系的功能还不受支持,我相信这是绕过这一点的一种方法.