我的模式类似于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);

所以我想要的是先用COMMON关系过滤数据然后获取A和C之间的所有其他关系。有没有办法用OR或AND条件写这个查询?
答案 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);