【问题标题】:cypher shortestpath query with filter带过滤器的密码最短路径查询
【发布时间】:2016-07-19 09:06:30
【问题描述】:

我正在使用密码查询来获取最短路径。

               MATCH path = allshortestPaths((a:Place { Name:'Name-1' })-[*]
               -(b:Place { Name:'Name-2' }))
               WHERE ANY(x IN nodes(path) WHERE x.Status = "true")
               RETURN path

上面的查询是在得到最短路径列表后过滤路径。

但我的要求是它应该在内部使用ANY(x IN nodes(path) WHERE x.Status = "true") 条件过滤路径,然后在过滤后的路径中,它应该找到最短路径。

这可能吗?

【问题讨论】:

  • 你用的是什么版本的 Neo4j?
  • 在 Neo4j 3.0 上,ALL 和 NONE 谓词在最短路径遍历期间进行评估。但是 ANY 没有被评估见neo4j.com/docs/developer-manual/current/…
  • 感谢 Luanne。我们使用的是 3.0.3 版本

标签: neo4j cypher


【解决方案1】:

无论您是先获取所有最短路径然后过滤条件还是反之,都没有关系。正如评论中所发布的,该条件用于最短路径查询。

您的查询可能很慢,因为必须评估所有路径以找到符合您条件的最短路径(请参阅评论中的链接)。

如果您的查询运行并返回一些内容,那么您一切都很好。

【讨论】:

  • 感谢您的回复。但是当我将 ANY 替换为 ALL/NONE 时,它将进入无限循环。这是什么原因。
  • 可能没有符合你条件的路径。
  • 如果路径不匹配,它应该不显示任何行。如果错了,请纠正我。还有其他原因吗
  • Martin,我想用带有 FILTER 的 neo4j java api 实现同样的事情(无论通过上面的 CIPHER 查询实现什么)。这可能吗。如果是的话,你能给我一些提示吗?提前谢谢
  • 对Java一无所知
猜你喜欢
  • 2013-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多