Cypher:循环遍历多条路径中的不同节点
Cypher: Loop over distinct nodes in multiple paths
我有一个带有节点的 neo4j 图,我需要在从开始节点到结束节点的路径上的所有节点上增加一个标志。但是我只需要增加一次这个标志,即使它位于多个路径上。
我使用以下查询,但显然它遍历了所有路径,因此标志不止一次递增:
MATCH paths = (end:Operation)-[DEPENDS_ON*]->(start:Operation )
WHERE id(start) = 304
AND end.final = true
UNWIND [ops IN nodes(paths)] AS op
SET op.flag = op.flag + 1
如何展开或收集所有路径上的不同节点然后递增 属性?
这个呢?
WITH COLLECT(DISTINCT ops) AS distinctOps
MATCH paths = (end:Operation)-[DEPENDS_ON*]->(start:Operation )
WHERE id(start) = 304
AND end.final = true
UNWIND nodes(paths) AS ops
WITH COLLECT(DISTINCT ops) AS distinctOps
FOREACH (op IN distinctOps |
SET op.flag = op.flag + 1
)
我有一个带有节点的 neo4j 图,我需要在从开始节点到结束节点的路径上的所有节点上增加一个标志。但是我只需要增加一次这个标志,即使它位于多个路径上。
我使用以下查询,但显然它遍历了所有路径,因此标志不止一次递增:
MATCH paths = (end:Operation)-[DEPENDS_ON*]->(start:Operation )
WHERE id(start) = 304
AND end.final = true
UNWIND [ops IN nodes(paths)] AS op
SET op.flag = op.flag + 1
如何展开或收集所有路径上的不同节点然后递增 属性?
这个呢?
WITH COLLECT(DISTINCT ops) AS distinctOps
MATCH paths = (end:Operation)-[DEPENDS_ON*]->(start:Operation )
WHERE id(start) = 304
AND end.final = true
UNWIND nodes(paths) AS ops
WITH COLLECT(DISTINCT ops) AS distinctOps
FOREACH (op IN distinctOps |
SET op.flag = op.flag + 1
)