程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> mongodb學習(查詢詳解)

mongodb學習(查詢詳解)

編輯:SyBase教程

mongodb學習(查詢詳解)


在前面幾篇博客當中學習到了修改的詳細操作,可是對於查詢卻一直是查詢所有的記錄,這篇文章將會帶大家詳細學習查詢的操作。

查詢指定字段
在進行正式的學習之前,我先將需要的數據插入數據庫中,如下:

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="\">

包含或不包含in和nin查詢

查詢國籍是中國或美國的學生
這裡寫圖片描述
查詢國籍不是中國或美國的學生
這裡寫圖片描述

or查詢

查詢語文成績>85或者英語成績>90的學生
這裡寫圖片描述

null查詢

把中國國籍的學生增加新的鍵”sex”,查詢出sex=null的學生
這裡寫圖片描述

正則查詢

查詢名字中存在”li”的學生信息
這裡寫圖片描述

not的使用

$not可以用於任何地方的取反操作
查詢出名字中不存在”li”的學生的信息
這裡寫圖片描述

數組查詢$all和index應用

查詢出喜歡看MONGOD和JS的學生
這裡寫圖片描述
查詢第二本書是JAVA的學生信息
這裡寫圖片描述
這裡注意,由於我們是查詢第二本書,所以其索引是1。

查詢指定數組長度$size

注意:$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操作

$slice操作符返回文檔中指定數組的內部值
查詢tom喜歡的2~4本書
這裡寫圖片描述
查詢tom喜歡的最後一本書
這裡寫圖片描述

$where查詢

復雜的查詢就可以使用where,但是要盡量避免使用它,因為這個是比較耗性能的。
查詢年齡是22歲的student的姓名:
這裡寫圖片描述
從圖中可以看出,由於有好幾個student的age==27.所以需要使用while來循環遍歷結果。

limit分段查詢

查詢出students文檔中前五條數據
這裡寫圖片描述
skip返回指定數據的跨度
查詢出student文檔中第5~10條數據
這裡寫圖片描述
sort排序查詢
查詢出第5~10條數據,按照年齡排序
這裡寫圖片描述

關於mongodb查詢的學習,就到這裡了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved