2012-04-15 74 views

回答

0

你說的是MapReduce作業,用JavaScript編寫的?如果是這樣,你可以使用.mapReduce(...)收集方法,但你需要指定map,reduce和finalize函數。
Here is the example

如果你正在談論執行任意JavaScript代碼,我認爲這是不可能的(爲什麼你不使用scala進行對象操作?)。

2

有幾種方法可以在服務器上運行任意的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 
    } 
}