![](/img/trans.png)
[英]Function is not recognized in map reduce command, mongoDB (javascript)
[英]Which “kind” of JavaScript is available inside a map and/or reduce function in MongoDB?
从版本2.4开始,MongoDB使用V8引擎,因此ECMA-262第5版。 在shell中运行MapReduce作业时,有一个额外支持的功能列表。
如果我使用本机Node.js驱动程序运行mapReduce作业怎么办? 我可以在map
使用任何模块或JavaScript函数并reduce
吗?
编辑 :我现在无法做一些测试来弄明白,但我会尽快更新问题。
MapReduce在MongoDB实例中运行。
您现在无法使用任何其他编程语言或平台来创建MapReduce。 您可以模拟我想的概念,但这意味着所有数据都会传输到您的应用程序等。
通过在提供的map
函数上调用toString
,函数体从Node.JS进程转移到MongoDB(和分片等)(参见此处 )。
if ('function' === typeof map) {
map = map.toString();
}
您可以在map
函数中嵌入函数,但是随着函数复杂性的增加,您需要确认性能是否满足您的需求。 但是,它仍然仅限于您传递的函数,并且无法访问可能正在执行的Node.JS中的其他脚本。
编辑:
此外,您可以使用mapReduce
调用的scope
参数来附加其他函数。 例如,您将scope
传递为:
{ add10: function(v) { return v + 10; } }
名为add10
的函数可以在map
调用中使用(还有reduce
和finalize
函数):
var fancyMath = add10(this.total);
因此,使用该技术,您可以传递一些有限的功能。 它确实被序列化为BSON并发送到MongoDB服务器,因此它需要是自包含的(而不是引用本地不可用的其他JavaScript函数)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.