MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Exécution d'une fonction personnalisée sur MongoDB à l'aide de Casbah/Scala

Il existe plusieurs façons d'exécuter du code javascript arbitraire sur le serveur. Vous pouvez la fournir sous forme de chaîne à partir du client et l'envoyer au serveur pour évaluation, ou installer d'abord la fonction sur le serveur, comme documenté ici :http://docs.mongodb.org/manual/core/server-side-javascript/

Les fonctions côté serveur sont enregistrées par base de données, dans une collection appelée system.js.

Dans tous les cas, vous pouvez ensuite utiliser la commande db.eval() pour appeler votre code, comme indiqué ici :

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