在前面幾篇博客當中學習到了修改的詳細操作,可是對於查詢卻一直是查詢所有的記錄,這篇文章將會帶大家詳細學習查詢的操作。
查詢指定字段
在進行正式的學習之前,我先將需要的數據插入數據庫中,如下:
var students= [{
name:"jim",
age:25,
email:"[email protected]",
c:89,m:96,e:87,
country:"USA",
books:["JS","C++","EXTJS","MONGODB"]
},
{
name:"tom",
age:25,
email:"[email protected]",
c:75,m:66,e:97,
country:"USA",
books:["PHP","JAVA","EXTJS","C++"]
},
{
name:"lili",
age:26,
email:"[email protected]",
c:75,m:63,e:97,
country:"USA",
books:["JS","JAVA","C#","MONGODB"]
},
{
name:"zhangsan",
age:27,
email:"[email protected]",
c:89,m:86,e:67,
country:"China",
books:["JS","JAVA","EXTJS","MONGODB"]
},
{
name:"lisi",
age:26,
email:"[email protected]",
c:53,m:96,e:83,
country:"China",
books:["JS","C#","PHP","MONGODB"]
},
{
name:"wangwu",
age:27,
email:"[email protected]",
c:45,m:65,e:99,
country:"China",
books:["JS","JAVA","C++","MONGODB"]
},
{
name:"zhaoliu",
age:27,
email:"[email protected]",
c:99,m:96,e:97,
country:"China",
books:["JS","JAVA","EXTJS","PHP"]
},
{
name:"piaoyingjun",
age:26,
email:"[email protected]",
c:39,m:54,e:53,
country:"Korea",
books:["JS","C#","EXTJS","MONGODB"]
},
{
name:"lizhenxian",
age:27,
email:"[email protected]",
c:35,m:56,e:47,
country:"Korea",
books:["JS","JAVA","EXTJS","MONGODB"]
},
{
name:"lixiaoli",
age:21,
email:"[email protected]",
c:36,m:86,e:32,
country:"Korea",
books:["JS","JAVA","PHP","MONGODB"]
},
{
name:"zhangsuying",
age:22,
email:"[email protected]",
c:45,m:63,e:77,
country:"Korea",
books:["JS","JAVA","C#","MONGODB"]
}]
之後我們執行如下for循環,批量插入這些數據:
for(var i = 0;i<students.length;i++){
db.students.insert(students[i])
}
可以看到,此時我的所有數據都已經插入進去了。下面我來實現只查詢部分字段,其實很簡單,比如我只想查詢name和email字段:
可以這樣寫:“db.students.find({},{name:1,email:1})”
db.documentName.find({條件},{鍵指定})
如下圖:
可以看到,系統在查詢name和email把”_id”也默認給我們查詢出來了,如果不想查詢出默認的”_id”字段,可以這樣寫:“db.students.find({},{_id:0,name:1,email:1})”
可是這裡我們是查詢的所有,第一個{}是用來填寫查詢條件的,如果我們需要按照條件查詢,就可以將條件寫到這裡。先看看mongodb中的常用比較操作符:
比如我查詢age和name字段,條件是age>=27&&age <25
查詢不是中國的學生:<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPiA8YnI+CjxpbWcgc3JjPQ=="http://www.2cto.com/uploadfile/Collfiles/20150523/2015052309560927.png" alt="這裡寫圖片描述" title="\">
查詢國籍是中國或美國的學生
查詢國籍不是中國或美國的學生
查詢語文成績>85或者英語成績>90的學生
把中國國籍的學生增加新的鍵”sex”,查詢出sex=null的學生
查詢名字中存在”li”的學生信息
$not可以用於任何地方的取反操作
查詢出名字中不存在”li”的學生的信息
查詢出喜歡看MONGOD和JS的學生
查詢第二本書是JAVA的學生信息
這裡注意,由於我們是查詢第二本書,所以其索引是1。
注意:$size不能與比較查詢符一起使用
查詢出喜歡的書籍數量是4本的學生
查詢出喜歡的書籍數量>3本的學生
1.增加字段size
db.students.update({},{set:{size:4}},false,true)
2.改變書籍的更新方式,每次增加一本書,對應的size+1
db.students.update({name:”tom”},{push:{books:"linux"},$inc:{size:1}})
可以看到,我在這裡為tom增加了一本書籍
3.查詢書籍的數量是5的學生
db.students.find({size:5},{_id:0,name:1,age:1})
4.查詢tom喜歡看的書的總數
$slice操作符返回文檔中指定數組的內部值
查詢tom喜歡的2~4本書
查詢tom喜歡的最後一本書
復雜的查詢就可以使用where,但是要盡量避免使用它,因為這個是比較耗性能的。
查詢年齡是22歲的student的姓名:
從圖中可以看出,由於有好幾個student的age==27.所以需要使用while來循環遍歷結果。
查詢出students文檔中前五條數據
skip返回指定數據的跨度
查詢出student文檔中第5~10條數據
sort排序查詢
查詢出第5~10條數據,按照年齡排序
關於mongodb查詢的學習,就到這裡了。