MySQL與Mongo簡略的查詢實例代碼。本站提示廣大學習愛好者:(MySQL與Mongo簡略的查詢實例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL與Mongo簡略的查詢實例代碼正文
起首在這裡我就不說關系型數據庫與非關系型數據庫之間的差別了(百度上有許多)直接切入主題
我想查詢的內容是如許的:分數年夜於0且人名是bob或是jake的總分數 均勻分數 最小分數 最年夜分數 計數
舉這個實例來嘗嘗用MySQL和mongodb分離寫一個查詢
起首我們先做一些預備任務
MySQL的數據庫構造以下
CREATE TABLE `new_schema`.`demo` ( `id` INT NOT NULL, `person` VARCHAR(45) NOT NULL, `score` VARCHAR(45) NOT NULL, PRIMARY KEY (`id`));
建完表以後我們來拔出一些數據
INSERT INTO `new_schema`.`demo` (`id`, `person`, `score`) VALUES ('1', 'bob', '50'); INSERT INTO `new_schema`.`demo` (`id`, `person`, `score`) VALUES ('2', 'jake', '60'); INSERT INTO `new_schema`.`demo` (`id`, `person`, `score`) VALUES ('3', 'bob', '100'); INSERT INTO `new_schema`.`demo` (`id`, `person`, `score`) VALUES ('6', 'jake', '100'); INSERT INTO `new_schema`.`demo` (`id`, `person`, `score`) VALUES ('8', 'li', '100');
我截個圖便利看一下構造
好 接上去我們進入mongodb的預備任務 看一下樹立的mongodb的聚集外面文檔的構造(根本跟MySQL一毛一樣)在這裡我就不寫拔出文檔的詳細進程了 (為了便看mongodb的顯示我都用兩種格局顯示:一個是表哥模塊顯示 一個是文本模塊顯示)
這個是表格模塊顯示
這個是文本模塊顯示
/* 1 */ { "_id" : ObjectId("58043fa8e9a7804c05031e17"), "person" : "bob", "sorce" : 50 } /* 2 */ { "_id" : ObjectId("58043fa8e9a7804c05031e18"), "person" : "bob", "sorce" : 100 } /* 3 */ { "_id" : ObjectId("58043fa8e9a7804c05031e19"), "person" : "jake", "sorce" : 60 } /* 4 */ { "_id" : ObjectId("58043fa8e9a7804c05031e1a"), "person" : "jake", "sorce" : 100 } /* 5 */ { "_id" : ObjectId("58043fa8e9a7804c05031e1b"), "person" : "li", "sorce" : 100 }
開端進入正題
如今我想查的MySQL語句是如許的(分數年夜於0且人名是bob或是jake的總分數 均勻分數 最小分數 最年夜分數 計數)
SELECT person, SUM(score), AVG(score), MIN(score), MAX(score), COUNT(*) FROM demo WHERE score > 0 AND person IN('bob','jake') GROUP BY person;
上面開端用Mongo寫出這個查詢
起首想到的是聚合框架
先用$match過濾 分數年夜於0且人名是bob或是jake
db.demo.aggregate( { "$match":{ "$and":[ {"sorce":{"$gt":0}}, {"person":{"$in":["bob","jake"]}} ] } }
獲得這個成果
這個是表哥模塊顯示的成果:
這個是文本模塊顯示的成果:
/* 1 */ { "_id" : ObjectId("58043fa8e9a7804c05031e17"), "person" : "bob", "sorce" : 50 } /* 2 */ { "_id" : ObjectId("58043fa8e9a7804c05031e18"), "person" : "bob", "sorce" : 100 } /* 3 */ { "_id" : ObjectId("58043fa8e9a7804c05031e19"), "person" : "jake", "sorce" : 60 } /* 4 */ { "_id" : ObjectId("58043fa8e9a7804c05031e1a"), "person" : "jake", "sorce" : 100 }
然後想要分組而且顯示最年夜 最小 總計 均勻值 和計數值
那末$group派上用處了:
db.demo.aggregate( { "$match":{ "$and":[ {"sorce":{"$gt":0}}, {"person":{"$in":["bob","jake"]}} ] } }, { "$group":{"_id":"$person", "sumSorce":{"$sum":"$sorce"}, "avgSorce":{"$avg":"$sorce"}, "lowsetSorce":{"$min":"$sorce"}, "highestSorce":{"$max":"$sorce"}, "count":{"$sum":1}} } )
獲得的成果就是 分數年夜於0且人名是bob或是jake的總分數 均勻分數 最小分數 最年夜分數 計數
成果的表格模塊顯示:
成果的文本模塊顯示:
/* 1 */ { "_id" : "bob", "sumSorce" : 150, "avgSorce" : 75.0, "lowsetSorce" : 50, "highestSorce" : 100, "count" : 2.0 } /* 2 */ { "_id" : "jake", "sumSorce" : 160, "avgSorce" : 80.0, "lowsetSorce" : 60, "highestSorce" : 100, "count" : 2.0 }
以上所述是小編給年夜家引見的MySQL與Mongo簡略的查詢實例代碼,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!