MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Esecuzione di funzioni personalizzate su MongoDB utilizzando Casbah/Scala

Esistono alcuni modi per eseguire codice javascript arbitrario sul server. È possibile fornirla come stringa dal client e inviarla al server per la valutazione, oppure installare prima la funzione sul server, come documentato qui:http://docs.mongodb.org/manual/core/server-side-javascript/

Le funzioni lato server sono registrate per db, in una raccolta chiamata system.js.

In ogni caso, puoi quindi utilizzare il comando db.eval() per chiamare il tuo codice, come mostrato qui:

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