我有一個實體集合,它代表一棵樹。每個實體都有一個包含屬性數組的屬性。MongoDB中的「父鏈接」樹上的MapReduce
例如:
{
"_id" : 1,
"parent_id" : null,
"attributes" : [ "A", "B", "C" ]
}
我想用MapReduce的生成另一個集合這類似於原來的集合,但集合中的每個項目,它不僅包含直接與實體相關的屬性,還有它的祖先,一直到hiearchy的根源。
因此,考慮下列實體:
{
"_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可能會出現這種情況嗎?或者我只是以錯誤的方式思考問題?
是可以將數據在您的應用程序相結合? Map Reduce依賴於單線程的Javascript。這裏是關於樹的模式設計的MongoDB文檔:http://www.mongodb.org/display/DOCS/Trees+in+MongoDB – Jenna 2012-07-06 21:54:28
這是可能的,但它很難保持實體同步,因爲可能會有相當多的深層次。 – tjrobinson 2012-07-08 05:58:34