sql >> Databasteknik >  >> NoSQL >> MongoDB

tekniker för att lagra bibliotek i mongoDB:s system.js

Varje fråga som använder JS kan återanvända eller få en helt ny JS-kontext, på vilken lagrade JS-objekt laddas. För att göra vad du vill behöver du antingen:

  1. mongod för att köra den lagrade koden automatiskt när du installerar den
  2. mapreducera för att ha en init-metod

Den första är definitivt den mer intressanta funktionen. Det visar sig att mongodb v8 build automatiskt gör det (men stöds inte officiellt), men inte det officiella spindelapbygget.

Säg att du lagrar kod som:

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

Sedan i v8 kan du använda myprint() fritt i din kod, men med SM skulle du behöva anropa mylib() explicit.

Som en lösning kan du skapa en annan metod:

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

Och kalla det från din map()-funktion.

Skapat biljett för att standardisera motorer och tillåta automatisk körning:https://jira.mongodb.org /browse/SERVER-4450




  1. Vercel skapar ny DB-anslutning för varje begäran

  2. Spring - mongodb - aggregering - Alternativet 'markör' krävs

  3. Mongoose Sparade _id's som en sträng istället för ObjectId

  4. MongoDB Spring datajämförelse mellan fält