【MongoDB】MongoDB 的存儲過程


原文鏈接:https://blog.csdn.net/l1028386804/article/details/79995587

 

MongoDB 為很多問題提供了一系列的解決方案,針對於其它數據庫的特性,它仍然毫不示弱,表現的非比尋常。
MongoDB 同樣支持存儲過程。關於存儲過程你需要知道的第一件事就是它是用 javascript 來寫的。也許這會讓你很奇怪,為什么它用 javascript 來寫,但實際上它會讓你非常滿意,MongoDB 存儲過程是存儲在 db.system.js 表中的,我們想象一個簡單的 sql 自定義函數如下:

function addNumbers( x , y ) { return x + y; }

下面我們將這個 sql 自定義函數轉換為 MongoDB 的存儲過程:

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

存儲過程可以被查看,修改和刪除,所以我們用 find 來查看一下是否這個存儲過程已經被創建上了。

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

這樣看起來還不錯,下面我看來實際調用一下這個存儲過程:

> db.eval('addNumbers(3, 4.2)'); 7.2 >

這樣的操作方法簡直太簡單了,也許這就是 MongoDB 的魅力所在。db.eval()是一個比較奇怪的東西,我們可以將存儲過程的邏輯直接在里面並同時調用,而無需事先聲明存儲過程的邏輯。

> db.eval( function() { return 3+3; } ); 6 >

從上面可以看出, MongoDB 的存儲過程可以方便的完成算術運算,但其它數據庫產品在存儲過程中可以處理數據庫內部的一些事情,例如取出某張表的數據量等等操作,這些MongoDB 能做到嗎?答案是肯定的, MongoDB 可以輕而易舉的做到,看下面的實例吧:

> db.system.js.save({_id:"get_count", value:function(){ return db.c1.count(); }}); > db.eval('get_count()') 2

可以看到存儲過程可以很輕松的在存儲過程中操作表。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM