我对Neo4j有疑问。我需要在图形数据库中将标签显示为节点-就像我的数据库中只有两种类型的标签(例如Thing和Person)一样,我希望有2个额外的节点-Thing和Person与普通节点具有关系。 / p>
示例-我有这个:
橙色节点是Person,红色是Thing。因此,我想为图形中的每个标签都有额外的标签节点。所以我想要这个:
可以自动创建吗?
答案 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 *
示例可视化结果: