2 votes

Exécution d'une fonction personnalisée sur MongoDB en utilisant Casbah/Scala

J'ai défini une fonction dans MongoDB en utilisant son client de ligne de commande.

function something(){...}

Je me demandais comment je pouvais exécuter une fonction MongoDB personnalisée à l'aide de casbah depuis Scala.

Des recommandations ?

Merci,

2voto

Adam Saunders Points 136

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

Les fonctions côté serveur sont enregistrées par db, 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
  }
}

0voto

om-nom-nom Points 33691

Parlez-vous de travaux MapReduce, écrits en JavaScript ? Si oui, vous pouvez utiliser .mapReduce(...) de la collection, mais vous devez spécifier les fonctions map, reduce et finalize.
Voici l'exemple .

Si vous parlez d'exécuter du code JavaScript arbitraire, je pense que ce n'est pas possible (pourquoi ne pas utiliser scala pour les manipulations d'objets ?).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X