neo4j,如何在所有最短路径算法中排除某些路径

时间:2015-01-26 22:36:06

标签: neo4j path-finding

我有一种城市地图,其中节点是十字架,弧是街道。我添加了一个属性"障碍"在一些街道几乎随机。现在我想找到一条从一个点到另一个点的路径,而不是在这条路径中有任何具有此属性的街道。有可能吗?

这是我编写的代码,问题出现在" street.obstacle不为空"

MATCH path=allShortestPaths((source:Cross)-[street:Street*]->(destination: Cross))
WHERE source.id="49" AND destination.id="57" AND 
      street.obstacle IS NOT NULL
return path AS shortestPath, 
       reduce(LENGTH=0, n IN rels(path)| LENGTH + n.length) AS totalLength

1 个答案:

答案 0 :(得分:2)

Null不适用于某些布尔条件。 Read more in the docs here。表达式(NOT NULL)返回NULL,而不是false,因为null被视为第三个选项,既不是true也不是false。真的没有数据。

您可能正在寻找has(street.obstacle),或者可能正在寻找EXISTS()功能,具体取决于您尝试表达的内容。会告诉您该属性是否存在(无论它具有什么价值)。