MongoDB 怎麼計運算元查詢
MongoDB在某些方面確實比關係型資料庫更強 (比如對追加型日誌資料的吞吐能力),但結構化計算能力方面較弱。比如:MongoDB不支援子查詢,碰到這些複雜的運算就只能先將資料讀出後再計算,而用Java等語言編寫這類計算也不是很簡單。
比如要處理這麼個場景:查出訂單資訊,要求訂單中的SELLERID必須是employee集合中STATE= California的員工id。如果寫成sql就是:
Select * from orders where orders.sellerid in (select eid from employee where employee.state=’California’)。
orders的資料量較大無法一次取出,employee的資料量較小,最終結果的資料量也較小。部分資料如下:
MongoDB Collection orders:
… { "_id" : ObjectId("5434f88dd00ab5276493e270"), "ORDERID" : 1, "CLIENT" : "UJRNP ","SELLERID" : 17, "AMOUNT" : 392, "ORDERDATE" : "2008/11/2 15:28" } { "_id" : ObjectId("5434f88dd00ab5276493e271"), "ORDERID" : 2, "CLIENT" : "SJCH" , "SELLERID" : 6, "AMOUNT" : 4802, "ORDERDATE" : "2008/11/9 15:28" } { "_id" : ObjectId("5434f88dd00ab5276493e272"), "ORDERID" : 3, "CLIENT" : "UJRNP ","SELLERID" : 16, "AMOUNT" : 13500, "ORDERDATE" : "2008/11/5 15:28" } { "_id" : ObjectId("5434f88dd00ab5276493e273"), "ORDERID" : 4, "CLIENT" : "PWQ", "SELLERID" : 9, "AMOUNT" : 26100, "ORDERDATE" : "2008/11/8 15:28" } … |
MongoDB Collection employee:
… { "_id" : ObjectId("5437413513bdf2a4048f3480"), "EID" : 1, "NAME" : "Rebecca", " SURNAME" : "Moore", "GENDER" : "F", "STATE" : "California", "BIRTHDAY" : "1974-1 1-20","HIREDATE" : "2005-03-11", "DEPT" : "R&D", "SALARY" : 7000 } { "_id" : ObjectId("5437413513bdf2a4048f3481"), "EID" : 2, "NAME" : "Ashley", "S URNAME" : "Wilson", "GENDER" : "F", "STATE" : "New York", "BIRTHDAY" : "1980-07- 19","HIREDATE" : "2008-03-16", "DEPT" : "Finance", "SALARY" : 11000 } { "_id" : ObjectId("5437413513bdf2a4048f3482"), "EID" : 3, "NAME" : "Rachel", "S URNAME" : "Johnson", "GENDER" : "F", "STATE" : "New Mexico", "BIRTHDAY" : "1970- 12-17","HIREDATE" : "2010-12-01", "DEPT" : "Sales", "SALARY" : 9000 } … |
計算結果:
如果有集算器的協助就簡單多了,它是專門為結構化、半結構化資料計算設計的程式語言,查詢、子查詢、分組後過濾等等都有函式類庫可以用,能夠很好的彌補MongoDB在結構化方面計算能力的不足。比如上面問題,4行就搞定了:
|
A |
1 |
=mongo_open("mongodb://localhost:27017/test?user=test&password=test") |
2 |
=mongo_shell(A1,"orders.find(,{_id:0})") |
3 |
=mongo_shell@x(A1,"employee.find({STATE:'California'},{_id:0})").fetch() |
4 |
=A2.select(A3.(EID).sort().pos@b(SELLERID)).fetch() |
其實還有很多情況用MongoDB處理結構化計算不太方便,但有集算器SPL的輔助卻很簡單,感興趣可以參考: 、 、
集算器還很容易嵌入到Java應用程式中, 有使用和獲得它的方法。
關於集算器安裝使用、獲得免費授權和相關技術資料,可以參見 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2699786/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- lavavel 中運算元據庫查詢別名
- MongoDB - 聚合查詢MongoDB
- 什麼是運算元?
- ❖ MongoDB 高階查詢MongoDB
- mongodb慢查詢分析MongoDB
- Mongodb高階查詢MongoDB
- MongoDB查詢條件MongoDB
- MongoDB查詢總結MongoDB
- spark-運算元-分割槽運算元Spark
- MongoDB查詢內嵌文件MongoDB
- MongoDB 常用查詢語法MongoDB
- MongoDB日期型別查詢MongoDB型別
- MongoDB慢查詢與索引MongoDB索引
- Mongodb 關聯表查詢MongoDB
- centos vim怎麼查詢?CentOS
- 運算元
- 使用運算元控制公式運算公式
- MongoDB 如何支援類 SQL 查詢MongoDBSQL
- mongodb條件查詢不等於MongoDB
- MongoDB 操作文件 查詢文件MongoDB
- 計算機論文查詢網站計算機網站
- Python 影像處理 OpenCV (12): Roberts 運算元、 Prewitt 運算元、 Sobel 運算元和 Laplacian 運算元邊緣檢測技術PythonOpenCV
- RDD運算元
- python中Roberts運算元是什麼Python
- excel查重是怎麼查的 excel表格怎麼查詢重複項Excel
- 【Spark篇】---SparkStreaming中運算元中OutPutOperator類運算元Spark
- 百度查詢疫苗真假教程 疫苗怎麼查詢真假
- JAVA - mongodb 聚合幾種查詢方式JavaMongoDB
- mongodb如何查詢最後幾項?MongoDB
- Spring Boot MongoDB 查詢操作 (BasicQuery ,BSON)Spring BootMongoDB
- Laravel使用MongoDB複雜的查詢LaravelMongoDB
- MyBatisPlus怎麼多表關聯查詢?MyBatis
- 報表怎麼做模糊查詢
- 怎麼查詢python裝在哪裡Python
- mysql怎麼查詢年齡段MySql
- javascript怎麼實現算術加法運算JavaScript
- 怎麼學習雲端計算?雲端計算運維和傳統運維有何區別?運維
- Mac計算器的計算過程怎麼看?教你一鍵檢視運算記錄!Mac