Cypher:查询层次结构中的所有节点

时间:2015-03-10 23:43:50

标签: neo4j cypher

我有多个层次结构,每个层次结构代表一个组织。

只需挑选2个样本层次结构......

层次结构1:

公司{name:'ABC',CompanyId:1,}< - Category< - SubCategory< - Service< - Asset< - Anomaly

层次结构2:

公司{名称:'XYZ',CompanyId:21,}< - 类别< - 服务< - 资产< - 异常

Anomaly可以进一步生成子项(动态添加检测到的,一个是实例)。我们的后端引擎查询整个层次结构。

考虑到可以附加到Anomaly的动态节点,我如何推广该密码?

匹配srvhier =(:公司)< - [] - ()返回多个密码 match srvhier =(:Company)< - [] - (:Instance)除非我有实例,否则不会返回任何数据

感谢。

2 个答案:

答案 0 :(得分:1)

您正尝试将Instace指定为示例中的标签。 如果您需要所有节点信息,那么您可以尝试这样

MATCH path= (:Company)<-[*]-(Instance)    
RETURN path

在此之后,您可以使用extract()方法来检索信息。

以下是http://neo4j.com/docs/stable/query-functions-collection.html#functions-extract

的参考资料

答案 1 :(得分:0)

我看了萨蒂什的回答,还有这个 - how to get the last node in path in neo4j?

可以提出符合我要求的密码......

MATCH path= (:Company {company_id:240})<-[*]-()    
WITH COLLECT(path) AS paths, MAX(length(path)) AS maxLength 
WITH FILTER(n IN paths WHERE length(n)= maxLength) AS compArray
RETURN EXTRACT(n IN compArray | LAST(nodes(n))) as lastN, compArray