You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:17:07