現在使用している方法は隣接リストモデルと呼ばれています。
階層データを(リレーショナル)データベースに格納する別のモデルは、入れ子集合モデルです。 SQLデータベースでの実装はよく知られています。変更されたプレオーダーツリートラバーサルアルゴリズムについては、この記事も参照してください。
非常に単純な方法:オブジェクトごとにパスを格納できます。パスを使用すると、NOSQLデータベースのツリーを簡単に照会できるはずです:
{ path: "Color", ... }
{ path: "Color.Red", ... }
{ path: "Color.Red.Apple", ... }
{ path: "Color.Red.Cherry", ... }
ノードが削除または名前変更される場合、一部のパスを更新する必要があります。しかし、一般的に、この方法は有望に見えます。区切り文字として特殊文字を予約する必要があります。ストレージスペースのオーバーヘッドはごくわずかである必要があります。
編集:このメソッドはマテリアライズドパスと呼ばれます
最後に、NOSQLデータベースの階層データのさまざまな方法の比較を示します。