如何使用OpenCypher与Apache AGE创建顶点间的双向关系?
如何在Cypher中同时创建双向关系?
Cypher语法里没有直接创建"双向关系"的写法,所有关系本质都是有向的。你尝试去掉箭头的写法在CREATE语句中不合法——无箭头的语法仅用于MATCH阶段匹配任意方向的关系,不能用于创建关系。
要实现"双向关系"的效果,你需要显式创建两个相反方向的独立关系,示例代码如下:
SELECT * FROM cypher('test_graph', $$ MATCH (a:Person), (b:Person) WHERE a.name = 'hossam' AND b.name = 'omar' CREATE (b)-[r1:REL {name: b.name+'->'+a.name}]->(a), (a)-[r2:REL {name: a.name+'->'+b.name}]->(b) RETURN r1, r2 $$) as (v agtype);
补充说明
如果你的需求只是在查询时忽略关系方向,不需要提前创建双向关系,查询时使用无箭头的模式即可:
MATCH (a:Person)-[:REL]-(b) WHERE a.name = 'hossam' AND b.name = 'omar' RETURN a, b
这个语句会匹配a和b之间任意方向的REL关系。
内容的提问来源于stack exchange,提问作者ahmed_131313
相关产品推荐
相关产品推荐

