我有一组实体,代表一棵树。每个实体都有一个包含属性数组的属性。
例如:
{
"_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 作业,这些作业做一些简单的事情,比如计算每个实体的属性,但我不知道如何处理层次结构。我对存储数据的替代方法持开放态度,但不想将整个层次结构存储在单个文档中。
在 MongoDB 中使用 MapReduce 是否可以实现这种精简,还是我只是以错误的方式思考问题?