2012-06-19 38 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圖形數據庫。