gpt4 book ai didi

neo4j - Cypher:按关系属性对同一级别的节点进行排序

转载 作者:行者123 更新时间:2023-12-04 18:03:00 30 4
gpt4 key购买 nike

我是 Neo4j 的新手,目前正在玩这个树结构:

enter image description here

黄色框中的数字是关系CHILD_OF 上名为order 的属性。

我的目标是

a) 通过此属性而不是通过定向关系(例如 LEFTRIGHTIS_NEXT_SIBLING< 来管理同一级别节点的排序顺序 等)。

b) 能够为 order 属性使用普通整数而不是完整路径(即不维护某物,如 0001.0001.0002)。

但是,我找不到关于如何或是否可以递归查询图形的正确提示,以便它不断返回节点 depth-first 但是对于每个级别的排序,请考虑关系的 order 属性。

我希望,如果可能的话,它可能包括将完整路径与 Cypher 的收集实用程序进行匹配,但我什至还不够接近以发布一些好的起点。

问题

我希望从这个问题的答案中得到的不一定是解决方案,而是暗示这是否是一种无论如何都会表现不佳的糟糕方法。就 Cypher 而言,如果有实用的解决方案,我很感兴趣。

我对如何将它作为具有 Java 遍历或核心 api 的 Neo4j 服务器插件来处理有一个大致的想法(这并不意味着它会表现良好,但那是另一个话题),所以这个问题真正针对设计和 Cypher 方面。

最佳答案

这可能有效:

match path = (n:Root {id:9})-[:CHILD_OF*]->(m)
WITH path, extract(r in rels(path) | r.order) as orders
ORDER BY orders

如果它提示对数组进行排序然后计算一个数字,其中每个数字(或两位数字)都是您的顺序并按该数字排序

match path = (n:Root {id:9})-[:CHILD_OF*]->(m)
WITH path, reduce(a=1, r in rels(path) | a*10+r.order) as orders
ORDER BY orders

关于neo4j - Cypher:按关系属性对同一级别的节点进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31892935/

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