目錄
一、課程大綱?
二、MongoDB 條件查詢
1.?制造 MongoDB 測(cè)試數(shù)據(jù)
2.?MongoDB 數(shù)據(jù)查詢 與 SQL對(duì)應(yīng)關(guān)系
3. MongoDB 查詢運(yùn)算符
4.?MongoDB 數(shù)據(jù)查詢、條件查詢、過濾
5.?MongoDB 條件查詢命令
6.?MongoDB 數(shù)據(jù)查詢數(shù)組條件
A. 精確匹配數(shù)組元素:
B. 無順序 and 精確 匹配
C. 至少匹配一個(gè)?
D. 組合條件滿足一個(gè)條件過濾
E. $elemMatch操作符查詢內(nèi)嵌文檔
F. 正則:模糊查詢:/.* .*/
G. 正則:以xx開頭:/^?.*/?
H. 正則:以xx結(jié)尾:/.* $/
7. MongoDB 數(shù)據(jù)查詢嵌套數(shù)組文檔
A. 文檔嵌套:?jiǎn)螚l件查詢
B. 文檔嵌套:多條件查詢(and)
三、映射Project 與 過濾
四、去除重復(fù) Distinct
五、聚合分組統(tǒng)計(jì) Group By
A.??三種方式
B:聚合函數(shù) ( 了解即可 )
?注意:4.2.1中已經(jīng)不支持 group( db.users.help() 查詢沒有g(shù)roup函數(shù) )
1.?分組統(tǒng)計(jì)不同年齡段的用戶
2. 分組統(tǒng)計(jì)不同用戶的訂單總額
C:聚合管道
D:MapReduce (非常適用于大數(shù)據(jù)分析,如基于java的hadoop)
一、課程大綱?
- MongoDB 條件查詢
- 映射 Project 與 過濾
- 去除重復(fù) Distinct
- 分組統(tǒng)計(jì) Group
二、MongoDB 條件查詢
1.?制造 MongoDB 測(cè)試數(shù)據(jù)
db.users.insert({name:'frank',age:16,city:'beijing' )
db.users.insert({name:'xulei',age:17,city:'hangzhou' )
db.users.insert(name:'frankxulei'age:18,city:'shanghai')
db.users.insert({name:'alibaba',age: 25,tags:['java','mysql','mongodb'],city:'hangzhou'})
db.users.save()
db.users.insertOne()
db.users.insertMany()
2.?MongoDB 數(shù)據(jù)查詢 與 SQL對(duì)應(yīng)關(guān)系
MongoDB | SQL語句 | 說明 |
find() | all | |
find({}) | all | |
find({fage:18}) | select * from users where age =18 | |
$lt:18 | where age<18 | less rhan |
$gt:18 | where age>18 | greater than |
$lte:18 | where age<=18 | less rhan or equal |
$gte=:18 | where age>=18 | greater than or equal |
$in:[18,19] | where age in(18,19) | |
$or:[{age:18}, { name:' frankxulei'}] | where age=18 or name= 'frankxuleil' | |
{age:18,name:'frankxulei'} | where age = 18 and name= 'frankxulei' | |
({“name”:/.*阿里.*/}) | select * from users where name like “%阿里%” |
3. MongoDB 查詢運(yùn)算符
4.?MongoDB 數(shù)據(jù)查詢、條件查詢、過濾
5.?MongoDB 條件查詢命令
6.?MongoDB 數(shù)據(jù)查詢數(shù)組條件
A. 精確匹配數(shù)組元素:
db.users.find( { tags:["java","mongodb"]})
- ??描述:查出所有數(shù)組中包含java和mongodb的文檔,且有先后順序
B. 無順序 and 精確 匹配
db.users.find( { tags:{$all:["java","mongodb"]}})
- ?描述:查出所有數(shù)組中包含java和mongodb的文檔
C. 至少匹配一個(gè)?
db.users.find( { tags:"java"})
- 描述:查出所有數(shù)組中包含java的文檔?
D. 組合條件滿足一個(gè)條件過濾
db.users.find( { age: { $gt: 15, $lt: 20 }})
- ?描述:查找?age ∈(15,20)?
E. $elemMatch操作符查詢內(nèi)嵌文檔
- 作用:用于查同于個(gè)元素中的鍵值組合,
- 針對(duì) LIst<object> 查詢
- 詳情請(qǐng)參考
db.test.insert({"id":1, "members":[{"name":"BuleRiver1", "age":27, "gender":"M"}, {"name":"BuleRiver2", "age":23, "gender":"F"}, {"name":"BuleRiver3", "age":21, "gender":"M"}]});
- $elemMatch + 同一個(gè)元素中的鍵值組合
db.test.find({"members":{"$elemMatch":{"name":"BuleRiver1", "age":27}}});
- $elemMatch+不同元素的鍵值組合(查不出結(jié)果)
db.test.find({"members":{"$elemMatch":{"name":"BuleRiver1", "age":23}}});
F. 正則:模糊查詢:/.* .*/
db.users.find( { name:/.*feng.*/ })
- ??描述:查找?name 包含 feng?的文檔
G. 正則:以xx開頭:/^?.*/
db.users.find( { name:/^zhang.*/ })
- ??描述:查找?name 以?zhang 開頭的文檔
H. 正則:以xx結(jié)尾:/.* $/
db.users.find( { name:/.*g$/ })
- ??描述:查找?name 以?g 結(jié)尾的文檔
7. MongoDB 數(shù)據(jù)查詢嵌套數(shù)組文檔
- 造數(shù)據(jù),其中?{}表示新的文檔
db.users.insert([
{name:'ali',age:51,address:{country:'china',city:'beijing',district:'haidian',dd:'zhongguancunroad 10'}}
{name:'baby',age:51,address:{country:'china',city:'hangzhou',district:'xihu',dd:'zhongguancunroad 10'}}
{name:'baby2',age:17,address:{country:'china',city:'hangzhou',district:'xihu',dd:'zhongguancunroad 10'}}
{name:'baby3',age:18,address:{country:'china',city:'hangzhou',district:'xihu',dd:'zhongguancunroad 10'}}
{name:'xiaowang',age:19,address:{country:'china',city:'shanghai',district:'pudong',dd:'sjtu park 10'}}
])
db.orders.insert([
{name:"frank",items:[{title:"mongodb",count:1},{title:"java",count:3}]},
{name:"xulei",items:[{title:"iphone 8p",count:2}]},
{name:"wangsicong",items:[{title:"RR",count :1},{title:"Benz",count:10}]}]);
A. 文檔嵌套:?jiǎn)螚l件查詢
db.users.find({"address.country":'china'})
- ??描述:查 "address.country"='china' 的文檔
B. 文檔嵌套:多條件查詢(and)
db.users.find({"address.country":'china',"address.city":"hangzhou",age:{$gte:18}})
- 查??"address.country"='china'
- 且??"address.city"="hangzhou"
- 且? ?age≥18
三、映射Project 與 過濾
作用:對(duì)查詢結(jié)果的過濾
- 如:查詢后加,{name:1} ,表示只顯示 name字段
- 查詢后加,{name:1,age:1} ,表示只顯示 name + age 字段
- 如:查詢后加,{age:0} ,表示不顯示 age字段
- 注意: 1 和 0不能同時(shí)使用,如?name:1,age:0 ,否則會(huì)報(bào)錯(cuò)
四、去除重復(fù) Distinct
作用:對(duì)查詢結(jié)果去重,并不會(huì)刪除原文檔
db.users.distinct("city")
db.users.distinct("address.city")
五、聚合分組統(tǒng)計(jì) Group By
A.??三種方式
- 聚合函數(shù)?
- 聚合管道
- MapReduce (非常適用于大數(shù)據(jù)分析, 如基于java的hadoop)
B:聚合函數(shù) ( 了解即可 )
?注意:4.2.1中已經(jīng)不支持 group( db.users.help() 查詢沒有g(shù)roup函數(shù) )
文章來源:http://www.zghlxwxcb.cn/news/detail-550583.html
1.?分組統(tǒng)計(jì)不同年齡段的用戶
db.users.group(
{
key: { age: 1 },
cond:{ age:{$gt:16 }},
reduce:function(curr, result) {
result.total += 1;
},
initial: { total : 0 }
}
)
2. 分組統(tǒng)計(jì)不同用戶的訂單總額
文章來源地址http://www.zghlxwxcb.cn/news/detail-550583.html
C:聚合管道
D:MapReduce (非常適用于大數(shù)據(jù)分析,如基于java的hadoop)
到了這里,關(guān)于【DBA課程-筆記】第2章:MongoDB數(shù)據(jù)數(shù)據(jù)查詢與分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!