Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 计算Cypher中不同的无向路径_Neo4j_Cypher - Fatal编程技术网

Neo4j 计算Cypher中不同的无向路径

Neo4j 计算Cypher中不同的无向路径,neo4j,cypher,Neo4j,Cypher,我试图确切地理解Cypher是如何返回无向路径的。以下是两个查询及其结果(除了一个使用无向模式外,它们是相同的): 计数(路径):1236951 计数(独立(路径)):1236951 计数(路径):2473901 计数(独立(路径)):2473901 关于这一点,我有两个具体问题 a、 )为什么无向情况下的count(path)不是有向情况下的两倍(它的off是1) b、 )在无向情况下,为什么count(distinct(path))与count(path)相同?我希望Cypher将每个路径匹

我试图确切地理解Cypher是如何返回无向路径的。以下是两个查询及其结果(除了一个使用无向模式外,它们是相同的):

计数(路径):1236951

计数(独立(路径)):1236951

计数(路径):2473901

计数(独立(路径)):2473901

关于这一点,我有两个具体问题

a、 )为什么无向情况下的count(path)不是有向情况下的两倍(它的off是1)

b、 )在无向情况下,为什么count(distinct(path))与count(path)相同?我希望Cypher将每个路径匹配两次,每个方向一次,然后在count(distinct(path))中不计算重复项。这难道不是将两个方向计算为同一路径吗?

(a)我不知道为什么第二次查询的路径计数不是第一次查询的两倍(除了可能的错误或数据损坏)。但是,您应该能够使用下面的查询获取不具有预期计数的关系。这可能会提供有用的线索

MATCH path = (a)-[r]-(b)
WITH r, COUNT(*) AS num
WHERE num <> 2
RETURN r;

这是一个猜测,我自己对neo4j是新手,但是关于为什么无向路径不是有向路径的两倍,我怀疑这与图中关系的方向有关

您在任何方向上查询路径,但如果图形是定向的,则关系仅沿该方向存在,因此在相反方向上查询关系将返回null


也许计数结果相同的原因是,图表中定义的每个关系都有一个方向

感谢您的帮助,@cybersam!通过您的查询,我发现一个节点与自身有一个关系,这就解释了为什么这个数字会减少一个。
MATCH path = (a)-[]-(b) RETURN count(path), count(distinct(path))
MATCH path = (a)-[r]-(b)
WITH r, COUNT(*) AS num
WHERE num <> 2
RETURN r;
MATCH path = (a)-[r]-(b)
RETURN count(path) AS nPaths, count(distinct r) AS nRels;