MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Executando função personalizada no MongoDB usando Casbah/Scala


Existem algumas maneiras de executar código javascript arbitrário no servidor. Você pode fornecê-lo como uma string do cliente e enviá-lo ao servidor para avaliação, ou instalar a função no servidor primeiro, conforme documentado aqui:http://docs.mongodb.org/manual/core/server-side-javascript/

As funções do lado do servidor são registradas por db, em uma coleção chamada system.js.

De qualquer forma, você pode usar o comando db.eval() para chamar seu código, conforme mostrado aqui:
/* 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
  }
}