0

我正在寻找围绕 mongo 组织我的 js 代码的好主意,但 map reduce 函数无法使用客户端范围,因此必须将所有函数发送(或保存)到服务器(难以重用现有代码)。我可以使用服务器存储的函数,但是因为我们有一个 db/client 系统,所以范围太大,db 范围的函数似乎是不可能的。

其他想法是使用 javascript 预处理器,类似这样:

var mapFunction = function() {
    // @include lib.js
    Lib.foo(this.bar);
}

lib.js:

var Lib = {
    foo : function(bar) {...}
}

并在 mapReduce 命令中运行生成的 mapFunction。

在 mongodb map/reduce javascript 代码库中是否有任何好的做法/想法来实现良好的代码重用(没有系统存储函数)?

4

1 回答 1

0

MongoDB中的服务器端函数DB 范围的。但是,通常不鼓励使用在版本控制系统中与应用程序的其余部分一起维护的代码。

如果您从应用程序发送 map/reduce 命令,则不需要预处理器......您可以调用插入适当代码的变量或函数。

您没有提到特定的语言,但这是从MongoDB PHP 文档中借用的示例:

// construct map and reduce functions
$map = new MongoCode("function() { emit(this.user_id,1); }");
$reduce = new MongoCode("function(k, vals) { ".
    "var sum = 0;".
    "for (var i in vals) {".
        "sum += vals[i];". 
    "}".
    "return sum; }");

$sales = $db->command(array(
    "mapreduce" => "events", 
    "map" => $map,
    "reduce" => $reduce,
    "query" => array("type" => "sale"),
    "out" => array("merge" => "eventCounts")));
于 2012-07-13T06:08:09.317 回答