查询neo4j中具有一组指定关系的所有路径



我正在尝试查询一个图,以返回具有一组指定关系的所有路径。

我的图包含以下节点:个人

连接两个人的关系是:知道,已婚

因此,一些数据的例子是:

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

最新更新