Auswerten von JavaScript-Ausdrücken in MongoDB-Feldwerten
In MongoDB ist es möglich, Feldwerte basierend auf der Auswertung von JavaScript-Ausdrücken dynamisch zuzuweisen. Das einfache Einfügen eines JavaScript-Objekts als Feldwert führt jedoch nicht dazu, dass der Ausdruck ausgewertet wird.
Serverseitige Codeausführung
MongoDB bietet einen Mechanismus zum Speichern und Ausführen von JavaScript-Funktionen auf der Serverseite. Die spezielle Sammlung system.js speichert diese Funktionen. Um auf diese Sammlung zuzugreifen und eine Funktion auszuführen, können Sie die Run()-Methode des Typs mgo.Database verwenden. Die Run()-Methode benötigt einen Eval-Befehl mit dem auszuführenden JavaScript-Code als Argument.
Um beispielsweise eine gespeicherte Funktion namens myStoredFunction() aus Go mit dem MGO-Treiber aufzurufen, können Sie Folgendes verwenden Code:
db.Run(bson.M{"eval": "myStoredFunction();"})
Beispiel
Angenommen, Sie möchten das lastSeen-Feld auf den aktuellen Server festlegen Zeit. Sie können in system.js eine gespeicherte JavaScript-Funktion mit dem Namen getCurrentTime() erstellen:
function getCurrentTime() { return (new Date()).toISOString(); }
Dann können Sie in Ihrer Einfügeanweisung wie folgt auf die gespeicherte Funktion verweisen:
err := c.Insert( struct{Serial, Priority, Url, LastSeen interface{}}{ Url: getInformedHost() + ":" + getRunningPortString(), Priority: rand.Int(), LastSeen: bson.M{"$eval": "getCurrentTime()"} } )
Durch die Verwendung von $eval im LastSeen-Feldwert wertet MongoDB den angegebenen JavaScript-Ausdruck aus und speichert das Ergebnis als Feldwert.
Das obige ist der detaillierte Inhalt vonWie kann ich JavaScript-Ausdrücke auswerten, um Feldwerte in MongoDB dynamisch zuzuweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!