我已经在子节点之间添加了关系-[:Sibling]->,因此“顶部”节点只有一个传入的:Sibling关系,而“底部”节点只有一个传出的关系。
鉴于此,是否有Cypher查询可以按兄弟节点的顺序返回子节点?
我有一个查询,返回每个子节点及其兄弟节点,但现在必须编写一些代码以正确顺序返回列表。
另一种方法可能是为每个子节点添加排序号。如果其中一个子节点更改顺序,则需要为所有子节点更新它。这种方法似乎与图形数据库概念略有不同。
如果此问题以前遇到过,是否有标准算法可以通过编程解决?
更新1
sample data如Bruno所请求
(parent1) (child1)-[:ChildOf]->(parent1) (child2)-[:ChildOf]->(parent1) (child2)-[:Sibling]->(child1) (child3)-[:ChildOf]->(parent1) (child3)-[:Sibling]->(child2)
有没有Cypher查询可以按child1、child2、child3的顺序返回?
如果没有,则可以通过程序进行排序。
使用属性而不是关系
(parent1) (child1)-[:ChildOf]->(parent1) (child1:{order:1}) (child2)-[:ChildOf]->(parent1) (child2:{order:2}) (child3)-[:ChildOf]->(parent1) (child3:{order:3})
`match (c)-[:ChildOf]->(parent1) return c ordered by c:order`
我不认为有一种密码查询可以更新子元素的顺序。
更新2
我现在已经得到了以下查询,它以正确的顺序返回子元素
`match (firstChild)-[:FirstChildOf]->(parent) match (sibling)-[:Sibling*]->(firstChild) return firstChild,sibling`
该查询依赖于添加一个 -[:FirstChildOf]->(parent) 关系。
如果没有其他通知,我会将其设置为答案。
我应该假设没有用于将节点插入有序列表的 Cypher 查询吗?