Mongodb存储过程

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

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

如上面所示:db.system.js.save命令接收2个参数,_id代表存储过程的名字,value代表存储过程的定义。

我们可以对存储过程进行查询、修改和删除,查询使用find()命令:

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

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

> db.eval('addNumbers(4,15)');
19
> 

除了这种方式之外,我们还可以直接把存储过程的逻辑放在db.eval()参数中直接调用,无需事先声明存储过程的逻辑,如下所示:

示例1:执行存储过程查询posts集合中的文档数目

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

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

> db.eval(function(x,y) { return addNumbers(x, y); }, 17, 25)
42
关于db.eval()命令详情,参见: http://www.mongodb.org/display/DOCS/Server-side+Code+Execution 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值