sql >> Base de Datos >  >> NoSQL >> MongoDB

Ejecutando una función personalizada en MongoDB usando Casbah/Scala

Hay algunas formas de ejecutar código javascript arbitrario en el servidor. Puede proporcionarlo como una cadena del cliente y enviarlo al servidor para su evaluación, o instalar la función en el servidor primero, como se documenta aquí:http://docs.mongodb.org/manual/core/server-side-javascript/

Las funciones del lado del servidor se registran por db, en una colección llamada system.js.

De cualquier manera, puede usar el comando db.eval() para llamar a su código, como se muestra aquí:

/* 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
  }
}