繁体   English   中英

在地图中可以使用哪种“种类”的JavaScript和/或在MongoDB中减少功能?

[英]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调用中使用(还有reducefinalize函数):

var fancyMath = add10(this.total);

因此,使用该技术,您可以传递一些有限的功能。 它确实被序列化为BSON并发送到MongoDB服务器,因此它需要是自包含的(而不是引用本地不可用的其他JavaScript函数)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM