mongo数据库动态添加procedure(存储过程)

           mongo DB 同样支持存储过程,和别的一些数据库的不同的是 mongoprocedure 是以 javascript 形式存储在内部一个叫 system.jscollection 里的。可以使用 mongoJDBC 驱动中的 APIprocedure 进行动态的添加。

下面为代码demo:

              Mongo mongo = new Mongo( "10.232.31.46" ,27015);

       DB db = mongo.getDB( "dbName" );

       if ( "username" != null ) {

           boolean auth = db.authenticate( "username" ,

                  "password" == null ? new char [0] : "password" .toCharArray());

           if (!auth) {

              throw new MongoException( "authenticate failed!" );

           }

       }

       

       // 获取存储 procedurecollection

       DBCollection coll = db.getCollection( "system.js" );     

       BasicDBObject dbObject = new BasicDBObject();

      

       dbObject.put( "_id" , "addNumbers" );

       //procedure 的具体内容不能使用 string 类型存入,需要使用 driver 中定义的 code 类型

       dbObject.put( "value" , new Code( "function(x, y){ return x + y; }" ));

      

       // 将存储过程动态的添加到该集合中

       coll.save(dbObject);

 

 

       添加进去即可在进行查询等的时候调用 procedure 。如输入 {"$where":"addNumbers(a,1)==4"}

      也可使用 dbeval() 方法直接测试调用 procedure 。如 db.eval("function(x, y){ return x + y; }", 3,4);

      另:

        我觉得也 可以使用 DB 中的 command() 方法,可以直接执行命令行里的命令,感觉也可以通过这种方法添加 procedure

            上面是最近做项目需要用到自定义动态添加mongoDB的procedure,感觉可能还有许多错误的地方,以后深入了解了过后再校正。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值