您的位置:首页 > 数据库 > Mongodb

Mongodb存储过程使用

2015-10-21 16:35 483 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息