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

techniques de stockage des bibliothèques dans le system.js de mongoDB

Chaque requête utilisant JS peut réutiliser ou obtenir un tout nouveau contexte JS, sur lequel les objets JS stockés sont chargés. Pour faire ce que vous voulez, vous devez soit :

  1. mongod pour exécuter automatiquement le code stocké lors de son installation
  2. mapreduce pour avoir une méthode init

La première est certainement la fonctionnalité la plus intéressante. Il s'avère que la version 8 de mongodb le fait automatiquement (mais pas officiellement prise en charge), mais pas la version officielle de spidermonkey.

Dites que vous stockez un code comme :

db.system.js.save({ _id: "mylib", value: "myprint = function() { print('installed'); return 'installed';" }

Ensuite, dans la v8, vous pouvez utiliser myprint() librement dans votre code, mais avec SM, vous devrez appeler mylib() explicitement.

Pour contourner ce problème, vous pouvez créer une autre méthode :

db.system.js.save({ _id: "installLib", value: "if (!libLoaded) mylib(); libLoaded = true;" }

Et appelez-le depuis votre fonction map().

Ticket créé afin de standardiser les moteurs et de permettre l'exécution automatique :https://jira.mongodb.org /parcourir/SERVER-4450