密码路径查询(使用 Neo4j)



我有一个图形日期库,所以里面有一些像这样的模式:

(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]->()

但是没有"&",路径分配仅适用于没有","的模式。

谢谢

编辑:如果它有帮助,这是我正在寻找的另一个例子:在包含电影,人和关系(如ACTED_IN,知道,朋友和仇恨)的数据库中我想要所有包含演员"Actor1"(ACTED_IN电影"M")的图表,他知道"Person1",朋友"Person2"和讨厌"Person3",它们ACTED_IN同一部电影"M"。

像"迈克尔饥饿"答案中的联盟不起作用,因为我们有多个子图而不是图。此外,某些子图可能不是更大模式的正确答案。

您的查询效率非常低,因为您不会将搜索限制为一组开始节点,也不会使用标签或标签+属性组合!!!

您可以使用 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

最新更新