评估 MongoDB 字段值中的 JavaScript 表达式
在 MongoDB 中,可以根据 JavaScript 表达式的评估动态分配字段值。但是,简单地插入 JavaScript 对象作为字段值不会导致表达式被计算。
服务器端代码执行
MongoDB 提供了一种存储机制并在服务器端执行 JavaScript 函数。特殊的集合system.js存储了这些函数。要访问此集合并执行函数,可以使用 mgo.Database 类型的 Run() 方法。 Run() 方法采用 eval 命令和要执行的 JavaScript 代码作为参数。
例如,要使用 mgo 驱动程序从 Go 调用名为 myStoredFunction() 的存储函数,您可以使用以下命令code:
db.Run(bson.M{"eval": "myStoredFunction();"})
示例
假设你要设置将 lastSeen 字段更改为当前服务器时间。您可以在 system.js 中创建一个名为 getCurrentTime() 的存储 JavaScript 函数:
function getCurrentTime() { return (new Date()).toISOString(); }
然后,在插入语句中,您可以按如下方式引用存储的函数:
err := c.Insert( struct{Serial, Priority, Url, LastSeen interface{}}{ Url: getInformedHost() + ":" + getRunningPortString(), Priority: rand.Int(), LastSeen: bson.M{"$eval": "getCurrentTime()"} } )
通过在 LastSeen 字段值中使用 $eval,MongoDB 将计算指定的 JavaScript 表达式并将结果存储为字段值。
以上是如何评估 JavaScript 表达式以动态分配 MongoDB 中的字段值?的详细内容。更多信息请关注PHP中文网其他相关文章!