一、MongoDB數(shù)據(jù)查詢
(1)MongoDB使用find函數(shù)來數(shù)據(jù)查詢,其功能與SQL中的select函數(shù)相同,可以提供與關系型數(shù)據(jù)庫類似的許多功能,包括映射、排序等。
db.集合名.find(query,fields,limit,skip)
1.query相當于SQL中的where語句
2.fields用于字段映射,1的時候表示顯示0是不顯示,語法格式:{field:0}或{field:1}用時候要么全用0要么全用1,混合使用的話除了"_id":0 以外的混合用法是錯誤的。
3.limit 限制查詢結果集的文檔數(shù)量。
4.skip跳過一定數(shù)據(jù)量的結果,設置第一條返回文檔的偏移量。
(2)MongoDB與注意事項
1.MongoDB不支持多集合間的連接查詢,find函數(shù)一次查詢只能針對一個集合。
2.find參數(shù)為空或者查詢條件為空文檔時,會返回集合中所以的文檔。
3.除了將limit和skip作為find函數(shù)的參數(shù)外,還可以單獨使用limit和skip函數(shù)來修飾查詢結果。
例如:db.student.find({age:{$lt:22}}).limit(5).skip(10)
4.返回的查詢結果集默認是無序的,如果需要對結果進行排序,可以使用sort函數(shù)。1表示升序-1為降序。
例如:db.student.find().sort({name:1,age:-1})
5.db.collection.findOne()只會返回第一條數(shù)據(jù)。
6.當查詢的集合文檔數(shù)量很大時,為了加快數(shù)據(jù)的查詢速度可以創(chuàng)建索引。
7.除了使用find函數(shù)實現(xiàn)基本查詢之外,MongoDB還提供了聚合框架,用于復雜查詢。
二、查詢操作符介紹及使用
(1)比較查詢操作符
(2)邏輯查詢操作符
邏輯查詢操作符,可連接多個查詢條件,用于邏輯與、或、非以及取反操作。
(3)元素操作符
元素查詢操作符,用來查詢文檔中字段的屬性,包括字段是否存在以及字段的數(shù)據(jù)類型。
三、MogoDB的游標
使用find函數(shù)進行查詢時,MongoDB并不是一次返回結果集中的所有文檔,而是分批次的返回結果,返回的數(shù)據(jù)量不會多余4M,默認情況下會返回結果集的101個文檔或者1M的數(shù)據(jù)(看哪個條件先滿足就用誰)。返回的文檔會緩存到內(nèi)存中,同時會有一個cursor游標指向該批結果集中的第一個,當游標遍歷到完最后一個文檔時,游標將自動向MongoDB數(shù)據(jù)庫發(fā)送一個getMore數(shù)據(jù)請求得到下一批的結果集。
(1)使用游標時要注意下面幾個問題。
1.當調用find函數(shù)時,shell并不立即查詢數(shù)據(jù)庫,而是等真正開始游標的hasNext使用時(獲取結果時)才發(fā)送查詢請求。
2.游標對象的每個方法幾乎都返回游標對象本身,這樣就可以方便的進行鏈式函數(shù)調用。
3.如果不將find函數(shù)返回的游標賦值給一個局部變量進行保存的話,默認情況下游標會自動迭代20次。想要手動迭代就必須賦值給一個局部變量,然后用提供的函數(shù)進行迭代。
(2)游標的生命周期(創(chuàng)建、使用以及銷毀)
當客戶端使用find函數(shù)向服務器端發(fā)起一次查詢請求時,會在服務器端創(chuàng)建一個游標,然后就可以使用游標函數(shù)來操作查詢結果。
下面三種情況會讓游標銷毀:
1.游標遍歷完成后,或者客戶端主動發(fā)送終止消息。
2.客戶端保存的游標變量不在作用域內(nèi)。
3.在服務器端10分鐘內(nèi)未對游標進行操作。
(3)游標快照
游標因為沒有隔離性,所以游標可能會返回那些由于體積變大而被移動到集合末尾的文檔。為解決這一問題的方法是對查詢進行快照。其語法如下:
db.collection.find().snapshot()
使用快照后,查詢就會在_id索引上來遍歷執(zhí)行,這樣就可以保證每個文檔只會被返回一次,從而保證獲取結果的一致性。但快照會使得查詢速度變慢,使用需謹慎。
四、findAndModify函數(shù)的使用
findAndModify與update函數(shù)的比較:
1.都以原子的方式來更新修改文檔
2.當多個文檔滿足query條件時:
①findAndModify使用sort選項,對結果排序,選擇第幾個文檔。
②update不能選擇具體更新哪一個文檔。
3.update可以一次修改多個文檔,findAndModify不行。
4.update可以設置寫的安全級別findAndModify不行。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章名稱:MongoDB筆記(三)-創(chuàng)新互聯(lián)
轉載來于:http://www.rwnh.cn/article38/ddcgpp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、網(wǎng)站設計公司、品牌網(wǎng)站建設、Google、網(wǎng)站內(nèi)鏈、網(wǎng)站維護
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容