- 计算路径标识符值
- 你需要采取沿路径节点阵列 - NODES
- 经过的每个节点 - UNWIND或FOREACH
- 设置或标签或财产 - 现在你可以不使用变量的值作为标签,这意味着写入属性 - SET
MATCH (a:Job {Jobname:...}),(b:Job {Jobname:...}) WITH a, b,
a.Jobname + '-' + b.Jobname AS pathID
CALL apoc.algo.dijkstra(a,b,'runafter>','Duration') YIELD path, weight
FOREACH (n IN NODES(path)|
SET n.pathID = pathID,
n.pathWeight = weight
)
RETURN path,weight
由于您使用APOC,你可以set labels:
MATCH (a:Job {Jobname:...}),(b:Job {Jobname:...}) WITH a, b,
'inCalculatedPath' + '-' + a.Jobname + '-' + b.Jobname AS pathID
CALL apoc.algo.dijkstra(a,b,'runafter>','Duration') YIELD path, weight
CALL apoc.create.addLabels(NODES(path), ['inCalculatedPath', pathID])
RETURN path,weight
的另一种方法是添加类似Calculated path
节点:
MATCH (a:Job {Jobname:...}),(b:Job {Jobname:...}) WITH a, b
CALL apoc.algo.dijkstra(a,b,'runafter>','Duration') YIELD path, weight
CREATE (P:CalculatedPath)
SET P.weight = weight,
P.start = ID(a),
P.end = ID(b),
P.pathNodes = REDUCE(ids=[], n IN NODES(path)| ids + ID(n)),
P.pathRels = REDUCE(ids=[], r IN RELS(path) | ids + ID(r))
FOREACH (n IN NODES(path)|
MERGE (n)-[:inPath]->(P)
)
RETURN path, weight
而得到的路径返回:
MATCH (a:Job {Jobname:...}),(b:Job {Jobname:...}) WITH a, b
MATCH (path:CalculatedPath {start: ID(A), end: ID(b)})
RETURN path, path.weight AS weight
非常感谢!我尝试了所有的密码,他们只是像魅力一样工作!这些伟大的例子确实帮助我更好地理解了密码和neo4j的威力......再次感谢! – AlexDxl
@AlexDxl http://stackoverflow.com/help/someone-answers –