MongoDB 如何支援類 SQL 查詢

xiaohuihui發表於2020-07-05

經常看到有人追尋 MongoDB 支援 SQL 的解決方案,得到的都是一些否定答案,去寫 MongoDB 語法的指令碼吧 /MongoDB 歸類就是“NoSql”,有人解釋為“not only sql”,也有人直接理解為“no sql”/ 十年前有個 github 專案 ,一直處於實驗階段,看專案目標是把基本的 SQL 翻譯成 MongoDB 指令碼語法,但後來不了了之了。

看來,這確實是非常難得一件事!否則官方也早該把對 SQL 的支援內建了;即便沒內建,眾多的開源貢獻者也應該在外面給出了可用的補丁。

關聯式資料庫資料模型簡單,都是行列分明的單層二維表;所以描述它的計算的語言(SQL)就相對簡單;而 MongoDB 裡是多層巢狀的結構,屬性欄位任意出現。光是描述清楚選取哪一層的哪些欄位資訊,都是件不容易的事,再加上進一步的分組、聚合、條件、排序運算,複雜程度指數級上升,這也是多年來基於 MongoDB 資料庫計算一直困難的根本原因。

如果用徹底支援集合操作的集算器 SPL 語言,處理這種多層巢狀的資料結構就比較容易了,直接看程式碼:


A
2 =mongo_shell(A1," computer.find()").fetch()
3 =A2.new( _id:ID,income.array().sum():INCOME,output.array().sum():OUTPUT)

這和理想中的SQL基本上一模一樣了:
SELECT _id:ID,income.array().sum():INCOME,output.array().sum():OUTPUT FROM computer

而做同樣查詢的 MongoDB 指令碼則是如下的一個程式碼規模:

2png

MongoDB裡整套的查詢計算功能,都能用簡潔的SPL指令碼實現,就不一一在這裡列舉了。上面的例子摘自

 

SPL能很方便地嵌入到JAVA應用,可參考 。

具體使用方法可參考 。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2702489/,如需轉載,請註明出處,否則將追究法律責任。

相關文章