ツリーを表すエンティティのコレクションがあります。各エンティティには、属性の配列を含むプロパティがあります。
例えば:
{
"_id" : 1,
"parent_id" : null,
"attributes" : [ "A", "B", "C" ]
}
MapReduce を使用して、元のコレクションに似た別のコレクションを生成したいと考えていますが、コレクション内の各アイテムには、エンティティに直接関連付けられている属性だけでなく、その祖先の属性も含まれています。階層のルート。
したがって、次のエンティティが与えられます。
{
"_id" : 1,
"parent_id" : null,
"attributes" : [ "A", "B", "C" ]
}
{
"_id" : 2,
"parent_id" : 1,
"attributes" : [ "D", "E", "F" ]
}
{
"_id" : 3,
"parent_id" : 2,
"attributes" : [ "G", "H", "I" ]
}
MapReduce ジョブの結果は次のようになります。
{
"_id" : 1,
"attributes" : [ "A", "B", "C" ]
}
{
"_id" : 2,
"attributes" : [ "A", "B", "C", "D", "E", "F" ]
}
{
"_id" : 3,
"attributes" : [ "A", "B", "C", "D", "E", "F", "G", "H", "I" ]
}
各エンティティの属性をカウントするなどの単純なことを行う MapReduce ジョブの生成を管理しましたが、階層をどのように処理するかについて頭を悩ませることができません。データを保存する別の方法を受け入れていますが、階層全体を 1 つのドキュメントに保存したくありません。
MongoDB の MapReduce でこの種のシンは可能ですか、それとも問題を間違った方法で考えているだけですか?