程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL與Mongo簡略的查詢實例代碼

MySQL與Mongo簡略的查詢實例代碼

編輯:MySQL綜合教程

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簡略的查詢實例代碼,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved