在mongodb服务器上存储和执行 js 函数 - 存储过程
虽然官方不推荐使用将业务逻辑存储在数据库中,并且提示在 mongodb 中执行 javascript 存在性能限制。
但实际上,将 javascript 函数存储在 mongodb 中执行,还是非常有必要的,更方便,许多场景下性能会更好(在执行大量查询处理时不需要将数据传回客户端引擎)。
在目前的版本中,我们任然可以将 javascript 函数存储在 mongodb 内置的一个特殊集合 db.system.js
中,然后这些变量就可以在任何 mongodb 的 javascript 上下文中调用,包括:db.eval()
、$where子句
、mapReduce
。
自从 mongodb 3.0 版本及之后,执行 db.eval()
会得到一个 Warning: db.eval is deprecated
,意味着该 api 在未来即将被删除。但目前社区还没有提供类似的替代方案,并且该 api 在新的 mongodb 4.0 版本中任然可以正常使用。
相关讨论可以参考: SERVER-17453 warn that db.eval() / eval command is deprecated - MongoDB
如何使用
首先登陆 mongo shell
$ mongo
> use testdb
相关文章