gpt4 book ai didi

neo4j - 对路径上的所有节点执行 MATCH

转载 作者:行者123 更新时间:2023-12-01 10:03:24 24 4
gpt4 key购买 nike

是否可以在 ALL function 中使用 MATCH 模式? (使用 v1.8)?

我想做的是:我正在MATCH路径p = (a)-->(b)-->(c)-->( d)。但是,此路径上的所有节点都必须具有来自某个节点的附加传入关系 r。让我试着用 ASCII 来说明这一点:

(a)-->(b)-->(c)-->(d)
^ ^ ^
|r |r |r
( ) ( ) ( )

我能以某种方式使用 ALL 函数吗?还是我必须像这样添加额外的 MATCH 模式:

START ...
MATCH (a)-->(b)-->(c)-->(d)..., ()-[:r]->(b), ()-[:r]->(c), ...
RETURN ...

更新:

这是 Neo4j console 中的示例:

START n=node(0) 
CREATE (a), (b), (c), (d), (e),
n-[:rel1]->a, n-[:rel1]->b, n-[:rel1]->d, n-[:rel1]->e,
a-[:rel2]->b-[:rel3]->d, a-[:rel2]->c-[:rel3]->e

START n=node(0)
MATCH n -[:rel1]-> x -[:rel2]-> y -[:rel3]-> z, ()-[:rel1]->y, ()-[:rel1]->z
RETURN z

最佳答案

您可以使用 WHERE ALL 来完成此操作,如下所示:

START n=node(0) 
MATCH path = n -[:rel1]-> x -[:rel2]-> y -[:rel3]-> z
WHERE ALL(n in tail(nodes(path)) WHERE ()-[:rel1]->n)
RETURN z

tail(nodes(path)) 返回路径中除第一个节点之外的所有节点。在您的示例中,起始节点未与 rel1 关系连接,因此未返回任何内容。如果你想像你的文字解释的那样去做,只需删除尾部。

这就是您要找的吗?

关于neo4j - 对路径上的所有节点执行 MATCH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13776273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com