Neo4j:获取节点

时间:2015-07-14 08:59:17

标签: neo4j cypher spring-data-neo4j graph-databases

我的模式类似于A-> B-> C-> D在A到B和A之间存在N个无关系。 B到C等等但是有一个共同的关系" COMMON"在A,B,C,D之间。 使用我的" COMMON"我希望获得给定两个节点之间的所有其他关系。 例如。让我得到A到C之间的所有关系



Match path = (a)-[:COMMON*]-(c)
RETURN rels(path);



 上面的查询将获得A到C之间的所有节点,但它不会在节点之间返回关系。

所以我想要的是先用COMMON关系过滤数据然后获取A和C之间的所有其他关系。有没有办法用OR或AND条件写这个查询?

1 个答案:

答案 0 :(得分:0)

试试这个:

unit32_t

要提高效率,可以使用

Match path = (a)-[:COMMON*]-(c)
WITH distinct a,c
MATCH path2 = (a)-[*]-(c)
RETURN rels(path2);

MATCH path2 = allShortestPaths((a)-[*]-(c))

不幸的是,这还不可能(还):

Match path = (a)-[:COMMON*]-(c)
WITH distinct a,c, min(length(path)) as len
MATCH path2 = (a)-[*]-(c)
WHERE length(path2) <= len
RETURN rels(path2);