为什么我的查询在neo4j中返回0,0?

时间:2017-03-14 10:07:07

标签: neo4j

我有以下neo4j查询,它检查两个节点之间的关系计数:

match (a:T {id:1})-[y:FR]->(b:T {id:3}) match (a)-[x:F]->(b) return SIGN(COUNT(x)), SIGN(COUNT(y))

但是,在数据库中,节点之间存在FFR关系,它返回0,0?

我的查询有什么问题?

1 个答案:

答案 0 :(得分:1)

如果您确定节点存在,但您不确定关系是否存在,那么通过执行此类匹配可能会消除所有行,因为失败的MATCH不会生成行,并从之前删除行不符合比赛的比赛。

在你的情况下,最好在每个节点上匹配,然后获得所需关系类型的SIZE(),或者如果你只需要返回是否存在这种关系,则返回给定模式的EXISTS() :

match (a:T {id:1}), (b:T {id:3})
return EXISTS((a)-[:F]->(b)), EXISTS((a)-[:FR]->(b))

当然,如果您只需要1或0而不是真/假,请坚持使用SIGN(SIZE((a)-[:F]->(b))),依此类推。