我对Neo4j很新。我已经使用以下设置实现了一个示例用例:
借助stackoverflow和几个教程,我能够制定一个Cypher查询,它可以从任何具有一个externalID的起始节点到具有相同externalID的匹配端节点的所有路径。
MATCH p=(a:S)-[r*]->(b:E)
WHERE a.externalID=b.externalID
WITH p, relationships(p) as rcoll
RETURN p
到目前为止,查询的效果或多或少......
但是,我不知道如何更改图表扫描方式的行为。实际上我只需要所有可能路径的子集。这些路径满足以下要求:
我可以以某种方式调整查询,还是Neo4j还有其他任何可能使用上述策略获取所有路径?
非常感谢您的帮助。
答案 0 :(得分:1)
此Cypher查询可能适合您的用例:
MATCH p = (a:S)-[r*]->(b:E)
WHERE a.externalID = b.externalID
WITH
p,
REDUCE(c = a.capacity, r IN RELATIONSHIPS(p) |
CASE WHEN c < 0 THEN -1 ELSE c - r.weight END) AS residual
WHERE residual >= 0
RETURN p;
如果容量减少到REDUCE
以下,residual
子句会将0
设置为负值,即使后续权重通常会使其变为正数。