这“kind"可以在MongoDB的map和/或reduce函数中使用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
和reduce
中使用任何模块或JavaScript函数?
编辑:我现在不能做一些测试来弄清楚,但我会尽快更新问题。
MapReduce在MongoDB实例中运行
你现在不能使用任何其他编程语言或平台来创建MapReduce。我想您可以模拟这个概念,但这将意味着所有数据都传输到您的应用程序,等等。
函数体从Node.JS进程转移到MongoDB(和分片等)通过调用toString
提供的map
函数(见这里)。
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函数,将不可用的本地)。
相关文章:
- 解构javascript中的reduce函数
- Javascript作用域规则和mongo-map/reduce函数
- Javascript如何使用高阶函数和Map/Reduce函数来汇总多个数组
- reduce函数由JavaScript中的map函数组成
- 任何人都可以解释JavaScript中的reduce函数吗?
- 使用 reduce 函数返回数组
- 如何实现更通用的reduce函数以允许提前退出
- JavaScript:为什么可以't我在嵌套的reduce函数后面加链
- 重新创建JavaScript's reduce函数
- 使用javascript中的reduce函数查找数组的最小和最大数
- 如何在对象内部执行递归reduce函数
- Javascript reduce函数在这个对象上不起作用
- 这“kind"可以在MongoDB的map和/或reduce函数中使用JavaScript
- 我可以在reduce函数中删除属性名中的空格吗?
- MongoDB reduce函数出现奇怪的数值错误
- 在python或javascript中正确使用fold或reduce函数来处理长到宽的数据
- 无法使原生javascript reduce()函数工作
- Javascript reduce函数/三元运算符
- 高阶reduce()函数
- CouchDB map/reduce函数按日期显示用户的有限结果