我正在使用 MongoDB,我想在其中存储各种树。
存储树的一种方法是将每个节点存储为一个文档,并引用其子/父/祖先(如此处所述)
存储它的另一种方法是将整个树存储为一个文档,其中子文档作为子文档。例如
tree : { "title" : "root", "children" : [ { "title" : "node_1", "children" : [ ... ] }, { "title" : "node_2", "children" : [ ... ] } ] }
问题:推荐哪种方式存储树木?
以下是我想对我的数据执行的操作:
- 添加节点
- 删除节点
- 更新节点
- 获取整棵树的 json
由于我计划使用JsTree在 UI 上显示此树(您可以推荐 JsTree 的更好替代方案),它需要嵌套格式的 json 数据(方式 2),我想以相同的方式而不是方式 1 存储数据。
如果我以方式 1 将 json 数据存储在数据库中,那么我将必须为每个文档/节点映射一个 java 对象,然后通过将每个父级指向其相应的子级,然后在 java 中手动创建一个树对象,然后转换该 java-树对象返回 json 以获取嵌套的 json。
每个节点的 Jave 对象如下所示:
class Node {
private String title:
private List<Node> children;
}