答案 0 :(得分:1)
您将无法出于两个原因。
一个方向是无法确定的。你有(使用速记)
(1,2)->(6,7)<-(3,2)
(6,7)->(9,2)->(5,1)
(7,7)->(4,1)->(1,2)
(6,7)->(7,7)->(3,2)
除非你的图表有错误,你可以看到(6,7)和(3,2)之间的关系与其余的不一致,所以我的猜测是你与关系方向不一致创建图形,如果是这样,这会在尝试生成表时抛出任何可能的排序。
但是如果我们假设这是合并到图表中的错误,并且它应该是(6,7) - &gt;(3,2),则修复了排序问题。
但现在还有其他订购问题。您的图表中没有数据来确定要从哪个节点开始。
仅此一行的图形结果:(7,7), (4,1), (1,2)
也可以与(4,1), (1,2), (7,7)
或(1,2), (7,7), (4,1)
一起表达。
您可能能够生成逻辑上等效的行,但您将无法获得相同的输入。
但同样,假设图表应该是(6,7) - &gt;(3,2),并假设逻辑上等效的表格没问题,那么这样的事情可能有效:
MATCH p=(a)-->(b)-->(c)-->(a)
UNWIND nodes(p) as node
WITH p, node
ORDER BY id(node)
WITH p, collect(node) as nodes
WITH head(collect(p)) as path, nodes
WITH path[0] as a, path[1] as b, path[2] as c
RETURN a.x as Xa, a.y as Ya, b.x as Xb, b.y as Yb, c.x as Xc, c.y as Yc
为什么这么复杂?因为对于三个节点的每个三角形,有3种方式来对这些节点进行排序(如上所述),因此每组相同节点将有3条路径。为了避免在不同的顺序中具有相同点的冗余行,我们在路径中对节点进行排序,收集3个路径,仅获取其中一个,并在返回x和y值时使用这些路径。