2012-06-19 31 views
0

我有一个现有的mongo数据库,集合中的所有文档都有一个父指针(例如Parent Links)。所以走上树木很容易,也是常见的情况。Mongo map减少文档树上的查询

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

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

如果有任何示例将不胜感激。我简单的尝试打印树的第二层是失败的。我可以不在map函数中运行查询吗?

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

回答

1

我不能跑地图功能里面的查询?

有点,但没有。

其中一个关键问题是“询问去了哪里?”db引用是对本地数据库的引用,但这不适用于分片。

另一个问题是,即使它确实有效,你也可以得到一个非常危险的疯狂指数化工作。 (你怎么处理循环?

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