MongoDB 數據查詢


數據查詢

基本查詢

  • 方法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}})

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM