Mongodb存储过程使用

来源:互联网 发布:服务器域名怎么看 编辑:程序博客网 时间:2024/06/10 16:00

Mongodb支持存储过程的使用,存储过程可以接收和输出参数跟sql中的存储过程概念类似,返回执行存储过程的状态值,可以嵌套调用。Mongodb的存储过程是使用Javascript编写,并存储在db.system.js表中。我们可以自定义存储过程,然后存入该集合中,具体示例如下:
Shell代码

> db.system.js.save({_id:"addNumbers",value:function(x,y){return x+y;}});WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : "addNumbers" })

如上面所示:db.system.js.save命令接收2个参数,_id代表存储过程的名字,value代表存储过程的定义。
我们可以对存储过程进行查询、修改和删除,查询使用find()命令:
Shell代码

> db.system.js.find();{ "_id" : "addNumbers", "value" : function (x,y){return x+y;} }

在mongodb中,如果需要执行存储过程,则需要使用db.evel(‘procedureName(param1,param2,……)’); 命令,示例如下:
Shell代码

> db.eval("addNumbers(3,8)")11

除了这种方式之外,我们还可以直接把存储过程的逻辑放在db.eval()参数中直接调用,无需事先声明存储过程的逻辑,如下所示:
示例1:执行存储过程查询posts集合中的文档数目
Shell代码

> db.eval(function(){return db.posts.count();})0

示例2:把存储过程本身当做参数传递给db.eval()命令

> db.eval(function(x,y) { return addNumbers(x, y); }, 17, 25) 42
0 0
原创粉丝点击