我正在尝试创建动态地图功能 - 即使用任意字段进行聚合。我以为我可以使用一个闭包,但它不起作用 - 我得到一个错误,说明没有定义blah。
我的测试代码 -
o.map = (function(){
var blah = 'skill';
var mapIt = function() {
for (var idx = 0; idx < this[blah].length; idx++) {
var key = this.skill[idx];
var val = 1;
emit(key, val);
}
}
return mapIt
})()
此致 肖恩
答案 0 :(得分:2)
因此,map函数实际上是通过函数toString
(源代码形式)通过线路发送到mongodb,以便在mongodb本身(非节点)内执行。因此,这不起作用。这是scope
选项的用途。您需要在scope
对象中设置需要作为上下文/参数/范围提供给map / reduce作业的任何数据。
答案 1 :(得分:0)
看起来你必须手动设置范围 -
o.scope = {'blah':blah};