【问题标题】:Executing custom function on MongoDB using Casbah/Scala使用 Casbah/Scala 在 MongoDB 上执行自定义函数
【发布时间】:2012-04-26 22:02:10
【问题描述】:

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

function something(){...}

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

有什么建议吗?

谢谢,

【问题讨论】:

    标签: scala mongodb casbah


    【解决方案1】:

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

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

    【讨论】:

      【解决方案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
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多