[英]How can I use a variable inside MapReduce?
我在MapReduce中有以下脚本:
splitAndGroupServices = function(members) {
var mapFn = function() {
for(var j in this.services) {
var service = this.services[j];
if(service.member_id in members)
emit(service.member_id, service);
}
}
var reduceFn = ...;
var finalizeFn = ...;
db.items.mapReduce(mapFn, reduceFn, {out: {inline:1}, finalize: finalizeFn});
}
当我打电话时:
db.loadServerScripts();
splitAndGroupServices({b1: 0, b2: 1});
我不断收到错误消息:
"errmsg" : "exception: ReferenceError: members is not defined near 'ber_id in members) { emit(ser' (line 4)",
如何将外部函数变量传递给内部函数变量? 在JS中实际上是可能的,但是Mongo不喜欢它。
mapReduce命令支持在mapper
, reducer
和finalize
阶段共享的“作用域”:
db.items.mapReduce(
mapFn,
reduceFn,
{
"scope": { "members": members },
"out": { "inline": 1 },
"finalize": finalizeFn
}
)
这被视为该过程的“全局”,并且所有修改都进入下一阶段或在该阶段中类似可用。 这是在任何阶段函数中使用的“传递变量”的标准方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.