neo4j 基于节点属性的层次结构检索

vu8f3i0k  于 2023-08-04  发布在  其他
关注(0)|答案(2)|浏览(147)

在我的图中有一些节点,它们在一个层次结构中。该层次将保存为节点特性而不是边。图中这些节点之间没有连接边。“
例如:

P1 -CHILD-> P2, P3 -CHILD-> P4
P1 has Node property: Child - [P2,P3,P4]
P2 has Node property: Child - [P4]
P3 has Node property: Child - [P4]
P4 has Node property: Child - None

字符串
是否可以在密码查询中检索从P1开始的所有层次结构?

mepcadol

mepcadol1#

要利用图形数据库的强大功能,您的图形应该具有关系。使用此查询创建它们。

MATCH (n)
UNWIND n.child AS child
MATCH (ch {name:child})
CREATE (n)-[:HAS_CHILD]->(ch)

字符串
然后,您可以使用此查询返回完整的层次结构。

MATCH path = (n {name:"P1"})-[:HAS_CHILD*]->(ch)
RETURN [p in nodes(path) | p.name] AS pathToChild

eeq64g8w

eeq64g8w2#

您可以考虑使用ORDPATH按层次顺序进行排序。在https://www.wai.md/post/ordpath-computing-genealogy-descendancy-trees中描述了一个Neo4j用户定义的函数
在图形遍历过程中,您可以收集数值,然后调用该函数以获取按层次排序的连接位串。

相关问题