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