我使用它的命令行客戶端在MongoDB中定義了一個函數。使用Casbah/Scala在MongoDB上執行自定義函數
function something(){...}
我在想如何使用Scala中的casbah來執行一個自定義的MongoDB函數。
有什麼建議嗎?
感謝,
我使用它的命令行客戶端在MongoDB中定義了一個函數。使用Casbah/Scala在MongoDB上執行自定義函數
function something(){...}
我在想如何使用Scala中的casbah來執行一個自定義的MongoDB函數。
有什麼建議嗎?
感謝,
你說的是MapReduce作業,用JavaScript編寫的?如果是這樣,你可以使用.mapReduce(...)
收集方法,但你需要指定map,reduce和finalize函數。
Here is the example。
如果你正在談論執行任意JavaScript代碼,我認爲這是不可能的(爲什麼你不使用scala進行對象操作?)。
有幾種方法可以在服務器上運行任意的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
}
}