Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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 使用节点属性筛选器查找2个节点之间的最短路径_Neo4j_Cypher - Fatal编程技术网

Neo4j 使用节点属性筛选器查找2个节点之间的最短路径

Neo4j 使用节点属性筛选器查找2个节点之间的最短路径,neo4j,cypher,Neo4j,Cypher,我有一个由节点(公交车站)组成的图形数据库,该节点具有一个名为“is_in_operation”的属性,如果公交车站处于运行状态,则该属性设置为“true”;否则设置为“false” 如果公共汽车在两个站点之间行驶,则在两个节点之间会创建一个关系 我想找到两个节点之间站点数最短的路径,路径中的所有节点都可以运行 数据库中有一个示例,其中两个指定节点之间有两条路径。对于两条路径中的所有节点,“is_in_operation”属性都设置为“true”。当我运行下面的查询时,我得到了正确的答案 STA

我有一个由节点(公交车站)组成的图形数据库,该节点具有一个名为“is_in_operation”的属性,如果公交车站处于运行状态,则该属性设置为“true”;否则设置为“false”

如果公共汽车在两个站点之间行驶,则在两个节点之间会创建一个关系

我想找到两个节点之间站点数最短的路径,路径中的所有节点都可以运行

数据库中有一个示例,其中两个指定节点之间有两条路径。对于两条路径中的所有节点,“is_in_operation”属性都设置为“true”。当我运行下面的查询时,我得到了正确的答案

START d=node(1), e=node(5) 
MATCH p = shortestPath( d-[*..15]->e ) where all (x in nodes(p) where x.is_in_operation='true')
RETURN p;
当我为最短路径中的一个中间节点将“is_in_operation”属性设置为“false”并重新运行查询时,我希望它返回另一条路径。然而,我没有得到任何答案


这个问题不正确吗?如果是这样,我应该如何指定查询?

问题是
shortestPath
不能考虑
where
子句,因此您要匹配最短路径,然后用
where
将其过滤掉

这个如何?它可能不如最短路径有效,但如果存在,它应该返回一个结果:

START d=node(1), e=node(5) 
MATCH p = d-[*..15]->e
where all (x in nodes(p) where x.is_in_operation='true')
RETURN p
order by len(p)
limit 1;

问题是
shortestPath
无法考虑
where
子句,因此您要匹配最短路径,然后用
where
将其过滤掉

这个如何?它可能不如最短路径有效,但如果存在,它应该返回一个结果:

START d=node(1), e=node(5) 
MATCH p = d-[*..15]->e
where all (x in nodes(p) where x.is_in_operation='true')
RETURN p
order by len(p)
limit 1;