2016-03-21 3 views
0

データベースにいくつかのディレクトリ構造を保存しようとしているので、dir:{name、parent_dir}のようなデータモデルがあります。しかし、完全なパスが必要な場合は、mongodbクエリを作成して、/ parent_dir/parent_dir/parent_dir/dirのように、ルートではないすべてのディレクトリの親ディレクトリを監視します。しかし、それはあまりにも無駄なクエリになります。 1つのmongodbクエリでディレクトリの完全なキューを取得できますか?MongoDBは1つのコレクションから文書をリンクし、そのキューを読み取る

+0

この構造をデータベースに保存する必要がある場合は、グラフデータベースを使用することをお勧めします。これは、パス照会をより簡単かつ最適化します。グラフdbsのリストは次のとおりです。https://en.wikipedia.org/wiki/Graph_database#List_of_graph_databases – AxxE

答えて

0

あなたのユースケースに応じて、Models tree structures、特にmaterialized pathsセクションをチェックアウトすることができます。

例として、あなたは以下のようなパスを格納することができます

db.categories.insert({ _id: "parent_A", path: null }) 
db.categories.insert({ _id: "parent_B", path: ",parent_A," }) 
db.categories.insert({ _id: "parent_C", path: ",parent_A,parent_B," }) 

このパターンは文字列や正規表現での作業の追加の手順が必要であるが、パターンはまた、パスでの作業でより多くの柔軟性を提供し、部分パスでノードを見つけるなどの方法があります。

希望に役立ちます。

関連する問題