我有一个图表数据库,因此其中有一些像这样的模式:
(n1)-[:a]->(n2),
(n1)-[:b]->(n2),
(n1)-[:c]->(n2),
(n1)-[:e]->(n2),
(n1)-[:d]->(n3),
(n2)-[:b]->(n4)
我想拥有这种模式的所有图表
MATCH p={
(n3)<-[:d]-(n1)-[:a]->(n2)-[:b]->(n4),
(n1)-[:b]->(n2)<-[:c]-(n1),
(n1)-[:e]->(n2)
}
RETURN p
有可能吗?我搜索了一下,但我还没找到怎么做。 我知道我们可以使用“|”对于像这样的类型
()-[:a|b]->()
但没有“&amp;”并且路径分配仅适用于没有“,”的模式。
由于
编辑: 如果它可以帮助,这是我正在寻求的另一个例子: 在包含电影,人物和关系的数据库中,如ACTED_IN,KNOWS,FRIEND和HATE 我想要所有包含演员“Actor1”(谁是ACTED_IN电影“M”)的图表谁知道“Person1”,FRIEND“Person2”和HATE“Person3”哪个ACTED_IN同一部电影“M”。
像“迈克尔·亨格尔”的回答中的UNION不起作用,因为我们有多个子图而不是图。此外,某些子图可能不是更大模式的正确答案。
答案 0 :(得分:1)
您的查询将非常效率低下,因为您不会将搜索限制为一组既没有标签或标签+属性组合的起始节点!!!!
您可以使用UNION:
MATCH p=(n3)<-[:d]-(n1)-[:a]->(n2)-[:b]->(n4) RETURN p
UNION
MATCH p=(n1)-[:b]->(n2)<-[:c]-(n1) RETURN p
UNION
MATCH p=(n1)-[:e]->(n2) RETURN p