Neo4j:如何将标签显示为节点?

时间:2020-03-18 18:43:13

标签: database graph neo4j

我对Neo4j有疑问。我需要在图形数据库中将标签显示为节点-就像我的数据库中只有两种类型的标签(例如Thing和Person)一样,我希望有2个额外的节点-Thing和Person与普通节点具有关系。 / p>

示例-我有这个:

image 1

橙色节点是Person,红色是Thing。因此,我想为图形中的每个标签都有额外的标签节点。所以我想要这个:

enter image description here

可以自动创建吗?

1 个答案:

答案 0 :(得分:1)

您实际上并不想这样做,因为具有N个节点的可视化对象将与特殊的“标签”节点具有N个无关的关系,从而使得(甚至不可能)看到实际数据。为不同的标签使用不同的颜色是一个不错的选择。

无论如何,结果面板的顶部(在neo4j浏览器中)会告诉您哪种颜色属于哪个标签,因此您已经可以轻松地获取所需的信息。

[更新]

但是,如果您确实需要执行类似操作,则没有“自动”方式。但是您可以使用一些APOC过程来创建virtual nodes and relationships,这些过程没有存储在数据库中,但是可以可视化。

例如,如果您原来的Cypher查询为:

MATCH path=(p:Person)-[r:RELTYPE]->(t:Thing)
RETURN *

您可以使用此查询来生成适当的虚拟节点和关系:

MATCH path=(p:Person)-[r:RELTYPE]->(t:Thing)
WITH COLLECT(path) AS paths, COLLECT(DISTINCT p) AS ps, COLLECT(DISTINCT t) AS ts
CALL apoc.create.vNode(['V_Label'], {label: 'Person'}) YIELD node AS pLabel
CALL apoc.create.vNode(['V_Label'], {label: 'Thing'}) YIELD node AS tLabel
UNWIND ps AS person
CALL apoc.create.vRelationship(person, 'IS', {}, pLabel) YIELD rel AS pRel
WITH paths, ts, pLabel, tLabel, COLLECT(pRel) AS pRels
UNWIND ts AS thing
CALL apoc.create.vRelationship(thing, 'IS', {}, tLabel) YIELD rel AS tRel
RETURN *

示例可视化结果:

enter image description here

相关问题