首页 文章

使用Cypher如何在一个跃点内选择连接到节点的所有节点,同时从结果中排除中心节点?

提问于
浏览
1

Graph

以上图为例 . 使用Cypher,我将如何匹配除最长链和中心节点之外的所有节点?即中心节点正好一跳内的所有节点,同时排除中心节点(除3个节点和2个边缘外的所有节点和边缘) .

我尝试过以下方法:

MATCH (n:Node) WHERE n.id = "123" MATCH path = (m)-[*1..1]->(n) RETURN m

这几乎可以工作,但它仍然返回中心节点(即节点n) . 如何从查询结果中排除此节点?

2 回答

  • 0

    [更新]

    这将返回直接连接到指定节点的所有不同节点,并显式阻止返回指定节点(如果它与自身有关系):

    MATCH (n:Node)--(m)
    WHERE n.id = "123" AND n <> m
    RETURN DISTINCT m;
    
  • 0

    理想情况下,我希望匹配我的问题中提到的节点并删除它们 . 但是,由于我还没有找到这样做的方法,可以使用逆方法,其中除了问题中提到的那些节点之外的所有节点都匹配 . 从而有效地排除(但不删除)不需要的节点 .

    这可以使用此查询来实现:

    MATCH (n:Node) WHERE n.id = "123" MATCH path = (m)-[*2..]->(n) RETURN path
    

    这将返回中心节点以及该节点的所有路径,其长度大于或等于2 .

相关问题