MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Ausführen benutzerdefinierter Funktionen auf MongoDB mit Casbah/Scala

Es gibt einige Möglichkeiten, beliebigen Javascript-Code auf dem Server auszuführen. Sie können es als Zeichenfolge vom Client bereitstellen und zur Auswertung an den Server senden oder die Funktion zuerst auf dem Server installieren, wie hier dokumentiert:http://docs.mongodb.org/manual/core/server-side-javascript/

Serverseitige Funktionen werden pro Datenbank in einer Sammlung namens system.js.

registriert

In beiden Fällen können Sie dann den Befehl db.eval() verwenden, um Ihren Code aufzurufen, wie hier gezeigt:

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