我正在尝试查询一个图,以返回具有一组指定关系的所有路径。
我的图包含以下节点:个人
连接两个人的关系是:知道,已婚
因此,一些数据的例子是:
c:Person-[:knows]->b:Person
a:Person-[:married]->c:Person
d:Person-[knows]-> a:Person
在我的查询中,我希望能够找到所有包含"已知"one_answers"已婚"关系的路径;然而,我并不关心这种关系在路径中的顺序。例如,我的查询应该返回以下路径:
1) a:人-[:已婚]->c:人-[:知道]->b:人
2) d:人-[:知道]->a:人-[;已婚]->c:人
我尝试了以下查询
MATCH p=(a)-[:KNOWS|MARRIED*1..3]-(b)
RETURN p
然而,它返回了只有已知关系的路径或只有已婚关系的路径,而不是两者都有。
有没有办法找到我想要的路?非常感谢!
你可以试试这个
MATCH p=(a)-[rel*]-(b)
WHERE type(rel)='KNOWS' OR type(rel)='MARRIED'
RETURN p
它将为您提供的所有路径
MATCH p = (a:Person)-[rels:KNOWS|MARRIED*]->(b:Person)
WITH p, EXTRACT(r IN rels | TYPE(r)) AS types
WHERE 'KNOWS' IN types AND 'MARRIED' IN types
RETURN p