數據查詢
基本查詢
- 方法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,值為數組,數組中每個元素為json
- 例4:查詢年齡大於18,或性別為false的學生
db.stu.find({$or:[{age:{$gt:18}},{gender:false}]})
- and和or一起使用
- 例5:查詢年齡大於18或性別為true的學生,並且學生的姓名為gj
db.stu.find({$or:[{age:{$gte:18}},{gender:true}],name:'gj'})
范圍運算符
- 使用"$in","$nin" 判斷是否在某個范圍內
- 例6:查詢年齡為18、28的學生
db.stu.find({age:{$in:[18,28]}})
支持正則表達式
- mongodb提供的終端shell,同時也是一個js的執行器,可以編寫js的代碼和函數
- 使用//或$regex編寫正則表達式
- 例7:查詢姓黃的學生
db.stu.find({name:/^黃/}) db.stu.find({name:{$regex:'^黃'}}})
自定義查詢
- 使用$where后面寫一個函數,返回滿足條件的數據
- 例7:查詢年齡大於30的學生
db.stu.find({$where:function(){return this.age>30;}})
Limit
- 方法limit():用於讀取指定數量的文檔
- 語法:
db.集合名稱.find().limit(NUMBER)
- 參數NUMBER表示要獲取文檔的條數
- 如果沒有指定參數則顯示集合中的所有文檔
- 例1:查詢2條學生信息
db.stu.find().limit(2)
skip
- 方法skip():用於跳過指定數量的文檔
- 語法:
db.集合名稱.find().skip(NUMBER)
- 參數NUMBER表示跳過的記錄條數,默認值為0
- 例2:查詢從第3條開始的學生信息
db.stu.find().skip(2)
一起使用
-
方法limit()和skip()可以一起使用,不分先后順序
-
創建數據集
for(i=0;i<15;i++){db.t1.insert({_id:i})}
- 查詢第5至8條數據
db.stu.find().limit(4).skip(5) 或 db.stu.find().skip(5).limit(4)
投影
- 在查詢到的返回結果中,只選擇必要的字段,而不是選擇一個文檔的整個字段
- 如:一個文檔有5個字段,需要顯示只有3個,投影其中3個字段即可
- 語法:
- 參數為字段與值,值為1表示顯示,值為0不顯示
db.集合名稱.find({},{字段名稱:1,...})
- 對於需要顯示的字段,設置為1即可,不設置即為不顯示
- 特殊:對於_id列默認是顯示的,如果不顯示需要明確設置為0
- 例1
db.stu.find({},{name:1,gender:1})
- 例2
db.stu.find({},{_id:0,name:1,gender:1})
排序
- 方法sort(),用於對結果集進行排序
- 語法
db.集合名稱.find().sort({字段:1,...})
- 參數1為升序排列
- 參數-1為降序排列
- 例1:根據性別降序,再根據年齡升序
db.stu.find().sort({gender:-1,age:1})
統計個數
- 方法count()用於統計結果集中文檔條數
- 語法
db.集合名稱.find({條件}).count()
- 也可以與為
db.集合名稱.count({條件})
- 例1:統計男生人數
db.stu.find({gender:true}).count()
- 例2:統計年齡大於20的男生人數
db.stu.count({age:{$gt:20},gender:true})
消除重復
- 方法distinct()對數據進行去重
- 語法
db.集合名稱.distinct('去重字段',{條件})
- 例:查找年齡大於18的學生,來自哪些省份
db.stu.distinct('hometown',{age:{$gt:18}})