sql >> Database >  >> NoSQL >> MongoDB

technieken voor het opslaan van bibliotheken in mongoDB's system.js

Elke query die JS gebruikt, kan opnieuw worden gebruikt of een geheel nieuwe JS-context krijgen, waarop opgeslagen JS-objecten worden geladen. Om te doen wat je wilt, heb je het volgende nodig:

  1. mongod om de opgeslagen code automatisch uit te voeren bij het installeren
  2. mapreduce om een ​​init-methode te hebben

De eerste is absoluut de interessantere functie. Het blijkt dat de mongodb v8-build dit automatisch doet (maar niet officieel ondersteund), maar niet de officiële spidermonkey-build.

Stel dat u een code opslaat zoals:

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

Dan kun je in v8 myprint() vrijelijk in je code gebruiken, maar met SM zou je mylib() expliciet moeten aanroepen.

Als tijdelijke oplossing kunt u een andere methode maken:

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

En roep het aan vanuit je map() functie.

Ticket gemaakt om engines te standaardiseren en automatische uitvoering mogelijk te maken:https://jira.mongodb.org /bladeren/SERVER-4450




  1. Mongo-query-uitvoer afdrukken naar een bestand terwijl deze zich in de mongo-shell bevindt

  2. Auditlogboekregistratie voor MongoDB

  3. Hoe voeg ik een admin-gebruiker toe aan Mongo in 2.6?

  4. Langzame zoekopdracht in mongodb simuleren?