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

如何在SurrealDB中查询两个节点之间存在的关系?

在SurrealDB中判断两个节点是否存在关系

你可以通过两种方式实现类似Neo4j的节点关系存在性检查:

方法一:使用EXISTS子查询

利用EXISTS()函数结合双向关系查询,判断是否存在任意方向的连接:

SELECT EXISTS(
    -- 查询从node1到node2的向外关系
    SELECT * FROM Node:node1_id -> * -> Node:node2_id
    UNION
    -- 查询从node2到node1的向外关系(即node1的向内关系)
    SELECT * FROM Node:node1_id <- * <- Node:node2_id
) AS is_related;

如果需要指定特定关系类型(比如CONNECTED),将*替换为关系名称即可:

SELECT EXISTS(
    SELECT * FROM Node:node1_id -> CONNECTED -> Node:node2_id
    UNION
    SELECT * FROM Node:node1_id <- CONNECTED <- Node:node2_id
) AS is_related;

方法二:通过计数判断

统计两个节点之间的关系数量,若大于0则说明存在关系:

SELECT count(*) > 0 AS is_related FROM (
    SELECT * FROM Node:node1_id -> * -> Node:node2_id
    UNION
    SELECT * FROM Node:node1_id <- * <- Node:node2_id
);

说明

  • SurrealDB中用->表示向外的关系(outgoing),<-表示向内的关系(incoming),UNION组合两者以实现Neo4j中无向关系-[r]-的效果。
  • Node是你的节点文档类型,需替换为实际的类型名称;node1_id和node2_id替换为目标节点的ID。

内容的提问来源于stack exchange,提问作者grooby

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:05:54