0

我有一个现有的 mongo 数据库,其中集合中的所有文档都有一个父指针(例如Parent Links)。所以上树很容易,常见的情况下操作。

但是,我现在想编写一个 map reduce 作业,该作业从集合中的所有树根开始,并从每棵树的所有叶节点生成一些数据。所以map reduce作业的输出集合应该是一系列

{<root_id>, [<information from leafs associated with root_id>, ...]}.

如果有任何例子将不胜感激。我什至打印树的第二级的简单尝试都失败了。我不能在地图函数中运行查询吗?

mapf = function() {
    db.collection.find({"parent": this._id}).forEach(
         // This doesn't seem to work
    )
}
4

1 回答 1

1

我不能在地图函数中运行查询吗?

有点,但不要。

关键问题之一是“查询去哪儿了?” . 该db引用是对本地数据库的引用,但这不适用于分片。

另一个问题是,即使它确实有效,你也会得到一个疯狂的工作指数,这真的很危险。(你如何处理循环?

对于这类问题,我建议查看像 Neo4J 这样的图形数据库。

于 2012-06-19T23:43:21.320 回答