1
我在想我應該是一個簡單的地圖減少,但我有麻煩,因爲我找不到如何編寫服務器端JavaScript的參考。MongoDB Map-Reduce將文檔與動態模式結合起來
假設有兩個文件:
{
"_id" : ObjectId("530c8b58d95cd926144055d9"),
"atomic" : "p",
"doc" : {
"d1" : "t"
},
"array" : ["e"]
},
{
"_id" : ObjectId("530c8b71d95cd926144055da"),
"atomic" : "p",
"doc" : {
"d2" : "r"
},
"array" : ["f"]
}
我想的結果是
{
"_id" : "p",
"value" : {
"doc" : {
"d1" : "t",
"d2" : "r"
},
"array" : ["e", "f"]
}
}
地圖功能是:
function() {
emit(
this.atomic,
{doc: this.doc, array: this.array}
);
}
的不正確減少功能是:
function (key, values) {
var reduced = {doc:{}, array:[]};
values.forEach(function(val){
for(var i = 0; i < val.array.length; i++)
reduced.array.push(val.array[i]);
val.doc.forEach(function(kvp){reduced.doc.add(kvp.key, kvp.value);});
});
return reduced;
}
該數組的部分是好的,它試圖結合混亂的文件(即由於缺少功能而沒有執行)。我嘗試了所有我能想到的排列方式 - 如果將val.doc添加到數組中,那麼它們都會顯示出來,這只是我無法弄清楚如何將它合併到單個文檔中。
文檔中的字段將是動態的,因此無法通過名稱引用它。
任何幫助,將不勝感激。
咄,有一件事我沒有嘗試。謝謝! – mikkelfishman