通過前兩篇文章,已經學習了MongoDB的安裝,及CRUD基礎知識,本文將繼續講解MongoDB的進階知識,之前的操作都是通過命令列的方式進行的,實際上執行腳本同樣可以在可視化客戶端進行,本文以一些簡單的小例子,簡述MongoDB關于查詢的基礎知識,僅供學習分享使用,如有不足之處,還請指正,
基本查詢
查詢所有檔案
語法:db.集合名稱.find();
如下所示:
1 db.student.find();
示例:查詢所有的學生串列,如下所示:

按條件進行查詢
語法:db.集合名稱.find({條件});
1 db.student.find({name:"Zhangsan"});
示例:查詢名稱為zhangsan的學生資訊,如下所示:

只查詢一個檔案
語法:db.集合名稱.findOne({查詢條件});
如果滿足條件的有幾個檔案,但只需要顯示一個,如下所示:
1 db.student.findOne({dept:"Computer"});
注意:findOne,會將查詢的結果進行格式化,便于閱讀,

查詢結果格式化
語法:db.集合名稱.find().pretty();
1 db.student.find({name:"Zhangsan"}).pretty();
示例:查詢名稱為zhangsan的檔案,并格式化顯示,如下所示:

條件查詢
AND條件
MongoDB的find方法,可以傳入多個鍵-值,每一個鍵值用逗號隔開,即常規的SQL的AND條件,
語法:db.集合名稱.find({key1:value1,key2:value2,...});
示例:查詢系別為Computer的男生,如下所示:
1 db.student.find({sex:"Male",dept:"Computer"})

OR條件
多個條件,只需要滿足一個條件,即常規的OR的條件,
語法:db.集合名稱.find({$or:[{key1:value1},{key2:value2},...]});
示例:查詢名字為zhangsan或者lisi的資訊,如下所示:
1 db.student.find({$or:[{name:"Zhangsan"},{name:"Lisi"}]});

條件運算子
條件運算子用于比較兩個運算式并從mongoDB集合中獲取資料,
MongoDB中條件運算子有:
- (>) 大于 - $gt
- (<) 小于 - $lt
- (>=) 大于等于 - $gte
- (<= ) 小于等于 - $lte
示例1:查詢計算機系且年齡大于等于20的資訊,如下所示:
1 //dept=Computer and age>=20 2 db.student.find({dept:"Computer",age:{$gte:20}}).pretty();

示例2:年齡小于20歲的女生,如下所示:
1 //sex=Female and age<20 2 db.student.find({sex:"Female",age:{$lt:20}}).pretty();

示例3:查詢年齡大于18歲且小于20歲的女生,如下所示:
1 //sex=Female and age<20 and age>18 2 db.student.find({sex:"Female",age:{$lt:20,$gt:18}}).pretty();

$type運算子
$type運算子是基于BSON型別來檢索集合中匹配的資料型別,并回傳結果,
語法:db.集合名字.find({key1:{$type:資料型別或數字}});
MongoDB 中可以使用的型別如下表所示:

1 db.student.find({name:{$type:'string'}}).pretty(); 2 3 db.student.find({name:{$type:'double'}}).pretty();
示例:查詢名字為double型別的檔案,如下所示:

注意:double和int如何區分?在此例中,name看起來是int32型別,但卻是double型別來查詢,真是奇怪,
limit方法
如果你需要在MongoDB中讀取指定數量的資料記錄,可以使用MongoDB的Limit方法,limit()方法接受一個數字引數,該引數指定從MongoDB中讀取的記錄條數,
語法:db.集合名稱.find().limit(NUMBER)
示例1:查詢學生記錄前3條,如下所示:
1 db.student.find().limit(3);

示例2,查詢前3個男生,如下所示:
1 db.student.find({sex:'Male'}).limit(3);

Skip() 方法
skip()方法來跳過指定數量的資料,skip方法同樣接受一個數字引數作為跳過的記錄條數,
語法:db.集合名稱.find().limit(NUMBER).skip(NUMBER)
示例:去掉第1名男生,查2名,如下所示:
1 db.student.find({sex:'Male'}).limit(2).skip(1);

Sort排序
sort() 方法對資料進行排序,sort() 方法可以通過引數指定排序的欄位,并使用 1 和 -1 來指定排序的方式,其中 1 為升序排列,而 -1 是用于降序排列,
語法:db.集合名.find().sort({key1:1或者-1});
示例1,:按年齡從小到大排序,如下所示:
1 db.student.find().sort({age:1});

示例2:按年齡進行倒敘排列,如下所示:
1 db.student.find().sort({age:-1});

備注
少年游·長安古道馬遲遲
【作者】柳永 【朝代】宋 長安古道馬遲遲,高柳亂蟬嘶,夕陽鳥外,秋風原上,目斷四天垂,歸云一去無蹤跡,何處是前期,狎興生疏,酒徒蕭索,不似去年時,
作者:Alan.hsiang
出處:http://www.cnblogs.com/hsiang/
本文著作權歸作者和博客園共有,寫文不易,支持原創,歡迎轉載【點贊】,轉載請保留此段宣告,且在文章頁面明顯位置給出原文連接,謝謝,
關注個人公眾號,定時同步更新技術及職場文章
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/308611.html
標籤:其他
上一篇:MySQL45講之IO性能提升
下一篇:MongoDB進階之查詢(二)
