sql >> Database >  >> NoSQL >> MongoDB

Aangepaste functie uitvoeren op MongoDB met Casbah/Scala

Er zijn een paar manieren om willekeurige javascript-code op de server uit te voeren. Je kunt het als een string van de client aanleveren en het naar de server sturen voor evaluatie, of de functie eerst op de server installeren, zoals hier beschreven:http://docs.mongodb.org/manual/core/server-side-javascript/

Functies aan de serverzijde worden per db geregistreerd in een verzameling genaamd system.js.

Hoe dan ook, je kunt dan het db.eval() commando gebruiken om je code aan te roepen, zoals hier getoond:

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


  1. MongoDB $anyElementTrue

  2. Waarom kan mijn Redis Lua-script de sleutels op verschillende Redis Cluster-knooppunten niet atomair bijwerken?

  3. MongoDB GeoNear-resultaten sorteren op iets anders dan afstand?

  4. Mongoose vind alle documenten waar array.length groter is dan 0 &sorteer de gegevens