我有以下查询,其中有3个MATCHES,与WITH连接,搜索3个路径 .
MATCH (:File {name: 'A'})-[:FILE_OF]->(:Fun {name: 'B'})-->(ent:CFGEntry)-[:Flows*]->()-->(expr:CallExpr {name: 'C'})-->()-[:IS_PARENT]->(Callee {name: 'd'})
WITH expr, ent
MATCH (expr)-->(:Arg {chNum: '1'})-->(id:Id)
WITH id, ent
MATCH (entry)-[:Flows*]->(:IdDecl)-[:Def]->(sym:Sym)
WHERE id.name = sym.name
RETURN id.name
查询返回两个不同的id和一个不同的条目,以及7个不同的sym .
问题是因为在第二个MATCH中我传递了“WITH id,entry”,并且找到了两个不同的id,所以两个条目实例被传递给第三个匹配而不是1,并且第三个匹配的运行时间不必要地加倍至少 .
我想知道是否有人知道如何编写此查询只是使用一个单一的条目实例 .
1 回答
您最好的选择是聚合ID,但是您需要相应地在查询的第三部分调整逻辑: