MongoDB を使用しており、さまざまなツリーを格納したいと考えています。
ツリーを格納する 1 つの方法は、各ノードをその子/親/祖先への参照を含むドキュメントとして格納することです (ここで説明したように) 。
それを保存する他の方法は、子をサブドキュメントとして持つ 1 つのドキュメントとしてツリー全体を保存することです。例えば
tree : { "title" : "root", "children" : [ { "title" : "node_1", "children" : [ ... ] }, { "title" : "node_2", "children" : [ ... ] } ] }
質問:樹木の保管にはどの方法が推奨されますか?
データに対して実行したい操作は次のとおりです。
- ノードを追加する
- ノードを削除する
- ノードを更新する
- ツリー全体のjsonを取得する
このツリーをJsTreeを使用して UI に表示することを計画しているため(JsTree のより良い代替手段をお勧めします)、ネストされた形式 (方法 2) の json データを想定しているため、方法 1 ではなく同じ方法でデータを保存することを考えました。
方法 1 で json データを db に保存する場合、各ドキュメント/ノードの Java オブジェクトをマップし、各親を対応する子にポイントして Java でツリー オブジェクトを手動で作成し、その java- を変換する必要があります。 tree-object を json に戻して、ネストされた json を取得します。
各ノードの Java オブジェクトは次のようになります。
class Node {
private String title:
private List<Node> children;
}