首页 > 解决方案 > Neo4j - 获取特定类型节点的所有父节点

问题描述

我是属性图和数据库的新手,写过更简单的密码查询。我有一个像下面这样的模型。

Project(is_lib: true|false)

Project[:HAS]-> Artifact[:HAS]-> Version

Version[:DEPENDS_ON]-> Version

例子

项目工件:

ProjectA(is_lib:false) -> ProjectA-ArtifactA -> [pa-v1.1, pa-v1.2]

ProjectB(is_lib:false) -> ProjectB-ArtifactB -> [pb-v2.0]

ProjectC(is_lib:true) -> ProjectC-ArtifactC -> [pc-v5.1, pc-v5.2]

关系:

pa-v1.1 -> pb-v2.0 -> pc-v5.1

pa-v1.2 -> pc-v5.2

以上 pc-v5.1 和 pc-v5.2 是一个lib类型,它是一个项目属性。我想得到项目类型lib:true的所有父母。 数据库中可能有大量项目

所以在上面的例子中,我期待下面的结果。

pc-v5.1 has parents pa-v1.1, pb-v2.0. 
pc-v5.2 has parents pa-v1.2. 

我想要一个密码查询。如果有人能将结果指向我,我将不胜感激。

标签: neo4jcypher

解决方案


我想出了密码查询。如果有人在寻找它作为记录。
不过,我必须寻找此查询的性能方面,而不是性能方面。

MATCH(j)-[:HAS]->(k)-[:HAS]->(l)<-[:DEPENDS_ON]-(m)<-[:HAS]-(n)<-[:HAS]-(o)
WHERE o.is_lib=false
return m, l

推荐阅读