在 neo4j 中隐藏中间节点(浏览器)
Hide middle nodes in neo4j (Browser)
我的问题如下。我有以下节点关系:
(Student)-[:StudiesIn]->(Class)<-[:Teaches]-(Professor)
我正在尝试在浏览器的图形生成器上显示如下查询:
MATCH st=(a:Student)-[]-()-[]-(sir:Professor) RETURN st
这让我恢复了包括 class 在内的关系。现在我真的不关心这个特定可视化的 class,我想隐藏它。有没有办法在不实际创建(并存储在磁盘上)学生和教授之间的关系的情况下做到这一点?
我只想要这样的东西:
MATCH (a:Student)-[]-()-[]-(sir:Professor) RETURN (a)-[{name:"HasAsProfessor"}]-(sir)
但这不起作用。我还查看了 :http://grokbase.com/t/gg/neo4j/147evnv9j2/feature-request-virtual-relationships-in-result-sets 的建议如下:
MATCH (a:Student)-[]-()-[]-(sir:Professor) RETURN {start:a, rel:"CustomRel", end:sir}
但这在浏览器中不起作用(而且我没有时间从头开始重新实现图形可视化工具)
感谢您的帮助。
您可以使用来自 APOC Procedures 的虚拟关系,它们仅用于显示而不保存在数据库中:
MATCH (a:Student)-[*2]-(sir:Professor)
RETURN a, sir, apoc.create.vRelationship(a,'HasAsProfessor',{}, sir) as rel
您可以尝试使用程序创建 virtual relationships from the APOC library:
MATCH st=(S:Student)-[:StudiesIn]->(:Class)<-[:Teaches]-(P:Professor)
WITH S, collect(distinct P) as PS
UNWIND PS as P
CALL apoc.create.vRelationship(S,'HasAsProfessor',{}, P) YIELD rel
RETURN S, rel, P
Upd:在neo4j-browser中显示是合适的简单技巧来创建和立即删除关系:
MATCH st=(S:Student)-[:StudiesIn]->(:Class)<-[:Teaches]-(P:Professor)
WITH S, collect(distinct P) as PS
UNWIND PS as P
MERGE (S)-[r:VirtualRelationHasAsProfessor]->(P)
DELETE r
RETURN S, r, P
我的问题如下。我有以下节点关系:
(Student)-[:StudiesIn]->(Class)<-[:Teaches]-(Professor)
我正在尝试在浏览器的图形生成器上显示如下查询:
MATCH st=(a:Student)-[]-()-[]-(sir:Professor) RETURN st
这让我恢复了包括 class 在内的关系。现在我真的不关心这个特定可视化的 class,我想隐藏它。有没有办法在不实际创建(并存储在磁盘上)学生和教授之间的关系的情况下做到这一点?
我只想要这样的东西:
MATCH (a:Student)-[]-()-[]-(sir:Professor) RETURN (a)-[{name:"HasAsProfessor"}]-(sir)
但这不起作用。我还查看了 :http://grokbase.com/t/gg/neo4j/147evnv9j2/feature-request-virtual-relationships-in-result-sets 的建议如下:
MATCH (a:Student)-[]-()-[]-(sir:Professor) RETURN {start:a, rel:"CustomRel", end:sir}
但这在浏览器中不起作用(而且我没有时间从头开始重新实现图形可视化工具)
感谢您的帮助。
您可以使用来自 APOC Procedures 的虚拟关系,它们仅用于显示而不保存在数据库中:
MATCH (a:Student)-[*2]-(sir:Professor)
RETURN a, sir, apoc.create.vRelationship(a,'HasAsProfessor',{}, sir) as rel
您可以尝试使用程序创建 virtual relationships from the APOC library:
MATCH st=(S:Student)-[:StudiesIn]->(:Class)<-[:Teaches]-(P:Professor)
WITH S, collect(distinct P) as PS
UNWIND PS as P
CALL apoc.create.vRelationship(S,'HasAsProfessor',{}, P) YIELD rel
RETURN S, rel, P
Upd:在neo4j-browser中显示是合适的简单技巧来创建和立即删除关系:
MATCH st=(S:Student)-[:StudiesIn]->(:Class)<-[:Teaches]-(P:Professor)
WITH S, collect(distinct P) as PS
UNWIND PS as P
MERGE (S)-[r:VirtualRelationHasAsProfessor]->(P)
DELETE r
RETURN S, r, P