“相同”查询返回不同的结果

时间:2016-11-16 08:36:06

标签: neo4j cypher

我有两个查询几乎与下面相同(唯一的区别是r:在查询1中FOR的前面)

Query 1: MATCH p=()-[r:FOR]->() RETURN count(p)
Query 2: MATCH p=()-[FOR]->() RETURN count(p)

当我对Neo4j服务器运行此查询时,它会返回不同的结果。查询1大约是1/3或查询2,我想这是由于查询1已经'组合'结果而查询2没有。(例如a- [FOR] - > c和b- [FOR] - > c合并成1条记录),但只是我的猜测。我试图谷歌或搜索Neo4j文档,但没有运气。有人可以解释这个区别吗?

提前致谢。

1 个答案:

答案 0 :(得分:4)

MATCH p=()-[r:FOR]->() RETURN count(p)

此查询将FOR关系绑定到r变量(虽然它没有使用它)。

MATCH p=()-[FOR]->() RETURN count(p)

此查询将任何关系(即任何类型)绑定到FOR变量。

在Cypher中指定关系类型的正确语法是:XXX带有前导冒号。第二个查询的正确版本实际上是:

MATCH p=()-[:FOR]->() RETURN count(p)