使用卡斯巴/斯卡拉有关MongoDB执行自定义函数(Executing custom functio

2019-09-16 13:04发布

我定义了使用它的命令行客户端MongoDB中的功能。

function something(){...}

我想知道我怎么可以使用卡斯巴从斯卡拉执行定制MongoDB的功能。

任何建议?

谢谢,

Answer 1:

有几种方法可以在服务器上运行任意JavaScript代码。 您可以提供其作为来自客户端的字符串,并将其发送到服务器进行评估,或先在服务器上安装的功能,如下记载: http://docs.mongodb.org/manual/core/server-side-的JavaScript /

服务器端功能每分贝注册,在收集称为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
  }
}


Answer 2:

你说的是MapReduce作业,用JavaScript编写的? 如果是这样,你可以使用.mapReduce(...)收集的方法,但是你需要指定地图,减少并最终确定的功能。
这里是例子 。

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



文章来源: Executing custom function on MongoDB using Casbah/Scala