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