我的问题如下。我有以下节点关系:
MATCH st=(a:Student)-[]-()-[]-(sir:Professor) RETURN st
我试图在浏览器中的图形生成器上显示如下查询:
MATCH (a:Student)-[]-()-[]-(sir:Professor) RETURN (a)-[{name:"HasAsProfessor"}]-(sir)
这让我回到了包括班级在内的关系。现在,我并不真正关心这个特定可视化的类,我想隐藏它。有没有办法在没有实际创建(并存储在磁盘上)学生和教授之间的关系的情况下这样做?
我只想要这样的东西:
MATCH (a:Student)-[]-()-[]-(sir:Professor) RETURN {start:a, rel:"CustomRel", end:sir}
但这并不奏效。我还看了http://grokbase.com/t/gg/neo4j/147evnv9j2/feature-request-virtual-relationships-in-result-sets,其中的建议如下:
{{1}}
但是这在浏览器中没有用(而且我没有时间从头开始重新实现图形可视化工具)
感谢您的帮助。
答案 0 :(得分:3)
您可以尝试使用该过程创建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
更新:要在neo4j浏览器中显示,最好是创建并立即删除关系的简单技巧:
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
答案 1 :(得分:1)
您可以使用APOC Procedures中的虚拟关系,这些关系仅用于显示而不保存在数据库中:
MATCH (a:Student)-[*2]-(sir:Professor)
RETURN a, sir, apoc.create.vRelationship(a,'HasAsProfessor',{}, sir) as rel