隐藏neo4j中的中间节点(浏览器)

问题描述:

我的问题如下。我有以下节点的关系:隐藏neo4j中的中间节点(浏览器)

(Student)-[:StudiesIn]->(Class)<-[:Teaches]-(Professor) 

我想在浏览器上显示的图形发生器类似的查询:

MATCH st=(a:Student)-[]-()-[]-(sir:Professor) RETURN st 

这使我回包括类的关系。现在我并不关心这个特定的可视化课程,我想隐藏它。在没有实际创建(并在磁盘上存储)学生和教授之间的关系的情况下,有没有这样做的方法?

我只是想是这样的:

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} 

但是这并没有在浏览器中工作(因为我根本没有时间来重新从头开始实现的图形可视化工具)

谢谢你的帮助。

您可以尝试使用该程序创建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-浏览器中显示是合适的简单技巧来创建并立即删除关系:

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 
+0

谢谢!没有图书馆没有办法做到这一点?我在我的工作场所无法使用GitHub。 – Myxoh

+0

@Myxoh试试更新:) –

+0

感谢您的帮助!我想到了创建和删除(虽然那个更好,我想的那个)。 – Myxoh

您可以使用从APOC Procedures的虚拟关系,这是仅用于显示,而不是保存在数据库:

MATCH (a:Student)-[*2]-(sir:Professor) 
RETURN a, sir, apoc.create.vRelationship(a,'HasAsProfessor',{}, sir) as rel 
+0

谢谢!没有图书馆没有办法做到这一点?我在我的工作场所无法访问GitHub。 – Myxoh

+0

@Myxoh Neo4j不能在本地创建虚拟图形元素,就我所知,APOC在这里是您最好的选择。 – InverseFalcon

+0

谢谢。寻求帮助! – Myxoh