我有一个Neo4j图模型,有四(4)个节点。为简单起见,我将命名节点1-4。
(N1) - (N 2) - (N 3) - (N4)
我能否以图形方式从(n1)直接跳到(n3)而不显示(n2)?在我的数据示例中,(n1)可以有1个值,然后(n2)可以扩展为多个实体,然后所有(n2)个实体将连接到1(n3)。
我的想法是这会起作用,但它不会
MATCH(n1) - (n2) - (n3) 返回n1,n3
我得到零结果。我想知道这是否可行,或者是否有其他方式以图形方式显示结果。我可以将结果作为文本获得,但我希望以图形方式显示。
答案 0 :(得分:1)
是的,绝对有可能跳过中间节点。 Neo4J当然会在图遍历中使用它们,但它不必向您显示结果。有几种方法可以做到这一点:
使用长度指定的模式匹配,当您不关心它们之间的节点时。这看起来像这样:
MATCH (n1:Label1)-[*2]-(n3:Label3) RETURN n1, n3
中间的变量路径表示要遍历两个关系以到达节点编号3,因此在N1和N2之间必须有一个节点。
您可以做的另一件事就是不要指定中间节点的任何内容:
MATCH (n1:Label1)--()--(n3:Label3) RETURN n1, n3
这类似于您发布的第二种查询形式,但第二个节点未绑定到变量。
答案 1 :(得分:1)
如果你的意思是你希望neo4j浏览器绘制一条连接n1
和n3
的线(即使它们之间可能没有关系),是的,你可以这样做。
有APOC程序可以生成virtual nodes and relationships - 即看起来像真实节点的数据结构以及与neo4j浏览器的关系。
例如,如果您在neo4j浏览器中运行以下内容,则浏览器会在每个JUMP
和n1
对之间显示虚拟n3
关系(假设您只对Foo
个节点)。数据库中并不存在虚拟关系。
MATCH (n1:Foo)--()--(n3:Foo)
CALL apoc.create.vRelationship(n1,'JUMP', {}, n3) YIELD rel
RETURN n1, n3, rel;