Mongodb数据查询 | Mongodb
生活随笔
收集整理的這篇文章主要介紹了
Mongodb数据查询 | Mongodb
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.基本查詢①方法find():查詢db.集合名稱.find({條件文檔})②方法findOne():查詢,只返回第一個db.集合名稱.findOne({條件文檔})③方法pretty():將結果格式化db.集合名稱.find({條件文檔}).pretty()
2.比較運算符# 等于,默認是等于判斷,沒有運算符# 小于,$lt less-than# 小于或等于,$lte less-than,equal# 大于,$gt greater-than# 小于或等于,$gte greater-than,equal# 不等于,$ne not equal db.collection2.find({name:'郭靖'})db.collection2.find({age:{$gte:18}})
3.邏輯運算符①邏輯與# 默認是邏輯與的關系# 例:查詢年齡大于或等于18,并且性別為true的學生db.collection2.find({age:{$gte:18}, gender:true})②邏輯或# 使用$or,值為數組,數組中每個元素為json# 例:查詢年齡大于18,或性別為false的學生db.collection2.find({$or:[{age:{$gt:18}},{gender:false}]})注意點:find() >> 或條件下的{} >> $or[ ] >>>> {條件a},{條件b} >> {域:{ 邏輯符判斷} }③或、與共用# 例:查詢年齡大于18或姓名是郭靖,并且性別為男生db.collection2.find( {$or:[ {age:{$gt:18} },{name:'郭靖'} ],gender:true} )
4.范圍運算符# $in|$nin# 例:查詢年齡為18,28的學生db.collection2.find( {age:{$in:[18, 28] } } )# 這里要注意了,最大與最小都需要表中含有這幾個數
5.支持正則表達式# 使用 // 或 $regex 編寫正則表達式# 例:db.collection2.find( {name:/^黃/} )db.collection2.find( {name:{$regex:'^黃'} } )
6.自定義查詢# 使用$where后面寫一個函數,返回滿足條件的數據# 例:查詢大于30歲的學生db.collection2.find({$where: function(){return this.age > 18}})
7.Limit和Skip①方法limit():讀取指定數量的文檔# db.集合名稱.find().limit(NUMBER)db.collection2.find().limit(2)# 附:如果指定參數則顯示集合中的所有文檔②方法skip():用于跳過指定數量的文檔# db.集合名稱.find().skip(NUMBER)db.stu.find().skip(2)# 附:參數NUMBER表示跳過的記錄條數,默認為0③limit()與skip()一起使用# 不分先后順序;跳過指定數量文檔,再讀取指定數量的文檔# 查詢數據db.collection1.find().limit(4).skip(5)db.collection1.find().skip(5).limit(4)
8.投影--選擇字段顯示數據# ①db.集合名稱.find({},{ 字段名稱:1, ...})db.collection2.find({},{name:1, gender:1})# '1':表示顯示字段,不設置表示不顯示# ②特殊:對于_id列默認是顯示的,# 如果不顯示需要明確設置為0db.collection2.find({},{_id:0,name:1,gender:1})
9.排序--對結果集進行排序參數1為升序排列參數-1位降序排列# db.集合名稱.find().sort({字段:1....})# --根據性別降序,再根據年齡升序db.collection2.find().sort({gender:-1,age:1})
10.統計個數①方法count():用于統計結果集中文檔條數1.db.集合名稱.find({條件}).count()db.collection2.find({gender:true}).count()# --統計男生人數2.db.集合名稱.count({條件})db.collection2.count({age:{$gt:20}, gender:true})# --統計年齡大于20的男生人數
11.消除重復①方法distinct():對字段數據進行去重,提取--db.集合名稱.distinct('去重字段',{條件})db.collection2.distinct('hometown',{age:{$gt:18}})# 查詢年齡大于18歲的學生,來自哪些省份# 4.聚合查詢
1.基本語法--語法db.集合名稱.aggregate( {管道: {表達式} } )附:1.管道:在Unix和Linux中一般用于將當前命令的輸出結果作為下一個命令的輸入2.表達式:處理輸入文檔并輸出
2.常用表達式$sum: 計算綜合,$sum:1 表示以一倍計數$avg: 計算平均值$min: 獲取最小值$max: 獲取最大值$push: 在結果文檔中插入值到第一個文檔數據$first: 根據資源文檔的排序獲取第一個文檔數據$last: 根據資源文檔的排序獲取最后一個文檔數據
3.常用管道①$group--將集合中的文檔分組,可用于統計結果--_id表示分組的依據,使用某個字段的格式為'$字段'# 統計男生、女生的總人數db.stu.aggregate({$group:{_id:'$gender',counter:{$sum:1}}})--透視數據# 統計學生性別及學生姓名db.stu.aggregate({$group:{_id:'$gender',name:{$push:'$name'}}})--使用$$ROOT可以將文檔內容加入到結果集的數組中db.stu.aggregate({$group:{_id:'$gender',name:{$push:'$$ROOT'}}})②$match--修改輸入文檔的結構,如重命名、增加、刪除字段、創建計算結果--用于過濾數據,只輸出符合條件的文檔--使用MongoDB的標準查詢操作# 查詢年齡大于20的學生db.stu.aggregate({$match:{age:{$gt:20}}})# 查詢年齡大于20的男生、女生人數db.stu.aggregate({$match:{age:{$gt:20}}},{$group:{_id:'$gender',counter:{$sum:1}}})③$project--修改輸入文檔的結構,如重命名、增加、刪除字段、創建計算結果# 查詢學生的姓名、年齡db.stu.aggregate({$project:{_id:0,name:1,age:1}})# 查詢男生、女生人數,輸出人數db.stu.aggregate({$group:{_id:'$gender',counter:{$sum:1}}},{$project:{_id:0,counter:1}})④$sort--將輸入文檔排序后輸出# 查詢學生信息,按年齡升序b.stu.aggregate({$sort:{age:1}})# 查詢男生、女生人數,按人數降序db.stu.aggregate({$group:{_id:'$gender',counter:{$sum:1}}},{$sort:{counter:-1}})⑤$limit和$skip--$limit# 限制聚合管道返回的文檔數# 查詢2條學生信息db.stu.aggregate({$limit:2})--$skip# 跳過指定數量的文檔,并返回余下的文檔# 查詢從第3條開始的學生信息db.stu.aggregate({$skip:2})# 統計男生,女生人數,按人數升序,取第2條數據db.stu.aggregate({$group:{_id:'$gender', counter:{$sum:1}}}{$sort:{counter:1}}{$skip:1}{$limit:1})⑥$unwind字段拆分查詢--語法--文檔中一個數組字段含有多個值--根據字段下的值拆分多條--每條包含數組中的一個值--db.集合名稱.aggregate({$unwind:'$字段名稱'})# $unwind聚合方法下含有兩個屬性:path:'$字段名稱'preserveNullAndEmptyArrays:<布爾值># 不填寫屬性,默認表示<布爾值>為false# 且不用標記屬性名--構造數據db.t3.insert([{ "_id" : 1, "item" : "a", "size": [ "S", "M", "L"] },{ "_id" : 2, "item" : "b", "size" : [ ] },{ "_id" : 3, "item" : "c", "size": "M" },{ "_id" : 4, "item" : "d" },{ "_id" : 5, "item" : "e", "size" : null }])--查看查詢結果,顯示對空數組,無字段,null的文檔db.t3.aggregate( { $unwind:{ path:'$size', preserveNullAndEmptArrays:true}})--查看查詢結果,不顯示空數組,無字段,null的文檔db.t3.aggregate({$unwind: '$size'}) 相當于:db.t3.aggregate({$unwind:{path:'$size', preserveNullAndEmptyArrays:false}})
轉載于:https://www.cnblogs.com/rianbowymail/p/9197536.html
總結
以上是生活随笔為你收集整理的Mongodb数据查询 | Mongodb的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10中Android Studio
- 下一篇: 贝塞尔的原型对象