3.MongoDB数据查询
數(shù)據(jù)查詢
?
基本查詢
方法find():查詢:db.集合名稱.find({條件文檔})
方法findOne():查詢,只返回第一個(gè):db.集合名稱.findOne({條件文檔})
方法pretty():將結(jié)果格式化:db.集合名稱.find({條件文檔}).pretty()
比較運(yùn)算符
- 等于,默認(rèn)是等于判斷,沒有運(yùn)算符
- 小于$lt、小于或等于$lte、大于$gt、大于或等于$gte、不等于$ne
- 例1:查詢名稱等于'郭靖'的學(xué)生
db.stu.find({name:'郭靖'})
- 例2:查詢年齡大于或等于18的學(xué)生
db.stu.find({age:{$gte:18}})
邏輯運(yùn)算符
- 查詢時(shí)可以有多個(gè)條件,多個(gè)條件之間需要通過邏輯運(yùn)算符連接
- 邏輯與:默認(rèn)是邏輯與的關(guān)系
- 例3:查詢年齡大于或等于18,并且性別為true的學(xué)生
db.stu.find({age:{$gte:18},gender:true})
- 邏輯或:使用$or,值為數(shù)組,數(shù)組中每個(gè)元素為json
- 例4:查詢年齡大于18,或性別為false的學(xué)生
db.stu.find({$or:[{age:{$gt:18}},{gender:false}]})
- and和or一起使用
- 例5:查詢年齡大于18或姓名是郭靖,并且性別為男生
db.stu.find({$or:[{age:{$gte:18}},{gender:true}],name:'gj'})
范圍運(yùn)算符
- 使用"$in","$nin" 判斷是否在某個(gè)范圍內(nèi)
- 例6:查詢年齡為18、28的學(xué)生
db.stu.find({age:{$in:[18,28]}})
支持正則表達(dá)式
使用//或$regex編寫正則表達(dá)式
- 例7:查詢姓黃的學(xué)生
db.stu.find({name:/^黃/})
db.stu.find({name:{$regex:'^黃'}})
自定義查詢
- 使用$where后面寫一個(gè)函數(shù),返回滿足條件的數(shù)據(jù)
- 例7:查詢年齡大于30的學(xué)生
db.stu.find({
??? $where:function() {
??????? return this.age>30;
??? }
})
?
?
Limit
- 方法limit():用于讀取指定數(shù)量的文檔
- 語法:db.集合名稱.find().limit(NUMBER)
- 參數(shù)NUMBER表示要獲取文檔的條數(shù)
- 如果沒有指定參數(shù)則顯示集合中的所有文檔
?
skip
- 方法skip():用于跳過指定數(shù)量的文檔
- 語法:db.集合名稱.find().skip(NUMBER)
參數(shù)NUMBER表示跳過的記錄條數(shù),默認(rèn)值為0 - 方法limit()和skip()可以一起使用,不分先后順序
?
投影
在查詢到的返回結(jié)果中,只選擇必要的字段,而不是選擇一個(gè)文檔的整個(gè)字段
參數(shù)為字段與值,值為1表示顯示,值為0不顯示
db.集合名稱.find({},{字段名稱:1,...})
- 對(duì)于需要顯示的字段,設(shè)置為1即可,不設(shè)置即為不顯示
- 特殊:對(duì)于_id列默認(rèn)是顯示的,如果不顯示需要明確設(shè)置為0
?
排序
- 方法sort(),用于對(duì)結(jié)果集進(jìn)行排序
- 語法:db.集合名稱.find().sort({字段:1,...})
參數(shù)1為升序排列,參數(shù)-1為降序排列
?
統(tǒng)計(jì)個(gè)數(shù)
- 方法count()用于統(tǒng)計(jì)結(jié)果集中文檔條數(shù)
- 語法:db.集合名稱.find({條件}).count()
也可以與為:db.集合名稱.count({條件})
?
消除重復(fù)
- 方法distinct()對(duì)數(shù)據(jù)進(jìn)行去重
- 語法:db.集合名稱.distinct('去重字段',{條件})
?
?
?
總結(jié)
以上是生活随笔為你收集整理的3.MongoDB数据查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php转调页面,PHP中HTTP防盗链技
- 下一篇: 开发人员:月薪过万与年薪百万之间的差距