2

我已经使用它的命令行客户端在 MongoDB 中定义了一个函数。

function something(){...}

我想知道如何使用 Scala 的 casbah 执行自定义 MongoDB 函数。

有什么建议吗?

谢谢,

4

2 回答 2

2

有几种方法可以在服务器上运行任意 javascript 代码。您可以从客户端将其作为字符串提供并将其发送到服务器进行评估,或者首先在服务器上安装该功能,如此处所述:http: //docs.mongodb.org/manual/core/server-side- javascript/

服务器端函数在每个 db 中注册,在一个名为 system.js 的集合中。

无论哪种方式,您都可以使用 db.eval() 命令调用您的代码,如下所示:

/* Call like so:
     evalJavascript(myDB, "function (oid) { return coll.find({_id: oid}); }", someObjectId)
*/
def evalJavascript(db:MongoDB, func: String, args: String*): Validation[String, Object] = {
  val result = db.command(Map(
    "eval" -> func,
    "args" -> args.toList
  ));

  if (result.ok) {
    result.get("retval").success
  } else {
    result.getErrorMessage().failure
  }
}
于 2013-04-22T19:51:38.060 回答
0

您是在谈论用 JavaScript 编写的 MapReduce 作业吗?如果是这样,你可以使用.mapReduce(...)集合的方法,但你需要指定map、reduce和finalize函数。
这是示例

如果您正在谈论执行任意 JavaScript 代码,我认为这是不可能的(为什么不使用 scala 进行对象操作?)。

于 2012-04-15T13:51:14.260 回答