gpt4 book ai didi

neo4j cypher 保持由路径强加的排序,以便稍后在查询中使用

转载 作者:行者123 更新时间:2023-12-01 01:49:47 25 4
gpt4 key购买 nike

我正在使用类似的查询

MATCH p=((:Start)-[:NEXT*..100]->(n))
WHERE ALL(node IN nodes(p) WHERE ...)
WITH DISTINCT n WHERE (n:RELEVANT)
...
RETURN n.someprop;

我想让结果按 -[:NEXT]-> 方向产生的自然顺序排序关系。
但是 WITH在第三行打乱了这个顺序。问题是,我需要 1. 过滤器 :RELEVANT节点和 2. 只获得不同的这样的节点。

有什么方法可以保留顺序吗?也许在路径上分配编号顺序,然后用 ORDER BY 重用它?不知道该怎么做。

最佳答案

您要求不同的节点,这表明该节点可能可以通过多条路径到达,因此可能与起始节点相距多个距离。

而不是使用 DISTINCT,你应该使用 min() (或 max() ,取决于您的要求)每个 n 的路径长度.由于这些是聚合函数,因此每个 n 只能获得一行。 .

MATCH p=((:Start)-[:NEXT*..100]->(n:RELEVANT))
WHERE ALL(node IN nodes(p) WHERE ...)
WITH n, min(length(p)) as distance
WITH n
ORDER BY distance
...
RETURN n.someprop;

关于neo4j cypher 保持由路径强加的排序,以便稍后在查询中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45414968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com