Mongo 用户定义函数和 Map Reduce

Posted

技术标签:

【中文标题】Mongo 用户定义函数和 Map Reduce【英文标题】:Mongo User Defined Functions and Map Reduce 【发布时间】:2011-06-27 10:53:27 【问题描述】:

在 mongo 中有没有办法创建用户定义的 javascript 函数。我在客户端有几个 Map/Reduce 函数,我想在其他 MR 函数中使用它们。

例如,几个 MR 函数计算各种平均值。我希望能够像这样使用它们:

function reduce(k,v)

    if (val > myDatabaseAverage())
    // ..do something

【问题讨论】:

【参考方案1】:

使用

db.system.js.save(  _id : "myDatabaseAverage" , value : function()
  // ..do something 
  );

这会将 JS 函数存储在服务器上,并且从那时起 m/r 可以访问。

更多示例请参见:mongo/jstests/core/mr_stored.js

【讨论】:

不应该是“myDatabaseAverage”吗? mongo 测试现在使用db.system.js.insert()【参考方案2】:

正如@Remon van Vliet 所说,

你必须使用,

db.system.js.save(  _id : "myDatabaseAverage" , 
                     value : function() // ..do something  
                  );

先保存你的函数,

然后你需要打电话,

db.loadServerScripts();

在你执行你的函数之前。

【讨论】:

以上是关于Mongo 用户定义函数和 Map Reduce的主要内容,如果未能解决你的问题,请参考以下文章

Map/Reduce工作原理

map和reduce函数的使用

mongodb学习3---mongo的MapReduce

[转] map/reduce

廖雪峰教程笔记:js中map和reduce的用法

filter,map和reduce函数