首页 > 解决方案 > 如何在 Neo4j 中存储带有有序孩子的树?如何在 Cypher 中遍历这样的结构?

问题描述

在 Neo4j 中用有序的孩子存储树的最佳方法是什么?

输入:

1. 标题 1
   部分文字 1。
2. 标题 2
2.1。标题 2.1
     标题 2.1 下的一些文字。
2.2. 标题 2.2
     标题 2.2 下的一些文字。

标题可以是任意的,不一定包含编号。深度是任意的。节点和分支可以属于不止一棵树。

如何取回仍然在一个查询中排序的所有元素?

期望的输出:

|-----------+----------------+-------- -|
| 标题 | 内容 | 深度 |
|-----------+----------------+-------- -|
| 标题 1 | 标题 1 下的一些文字。0 |
| 标题 2 | | 0 |    
| 标题 2.1 | 标题 2.1 下的一些文字。| 1 |
| 标题 2.2 | 标题 2.2 下的一些文字。| 1 |
|-----------+----------------+-------- -|

我的问题基于关系数据库可以使用嵌套集在一个查询中检索这种结构这一事实。

标签: neo4jcypher

解决方案


我遇到了同样的问题。从我考虑的所有选项中,最好的选项看起来是一个整数属性来保存“线”的索引。在检索时,记录以该索引作为键进入排序映射。这种方法的一个明显缺点是,应该在对象之间插入一些东西。需要完全重新索引以保持完整性。对于罕见的编辑,索引可以按 10、100 等因子缩放,以减少立即重新索引的可能性。

PS 抱歉,我不使用 Cypher,所以这里没有脚本。


推荐阅读