真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MongoDB筆記(三)

一、MongoDB數(shù)據(jù)查詢(xún)

目前成都創(chuàng)新互聯(lián)已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、確山網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

    (1)MongoDB使用find函數(shù)來(lái)數(shù)據(jù)查詢(xún),其功能與SQL中的select函數(shù)相同,可以提供與關(guān)系型數(shù)據(jù)庫(kù)類(lèi)似的許多功能,包括映射、排序等。

    db.集合名.find(query,fields,limit,skip)

    1.query相當(dāng)于SQL中的where語(yǔ)句

    2.fields用于字段映射,1的時(shí)候表示顯示0是不顯示,語(yǔ)法格式:{field:0}或{field:1}用時(shí)候要么全用0要么全用1,混合使用的話除了"_id":0 以外的混合用法是錯(cuò)誤的。

    3.limit 限制查詢(xún)結(jié)果集的文檔數(shù)量。

    4.skip跳過(guò)一定數(shù)據(jù)量的結(jié)果,設(shè)置第一條返回文檔的偏移量。

    (2)MongoDB與注意事項(xiàng)

    1.MongoDB不支持多集合間的連接查詢(xún),find函數(shù)一次查詢(xún)只能針對(duì)一個(gè)集合。

    2.find參數(shù)為空或者查詢(xún)條件為空文檔時(shí),會(huì)返回集合中所以的文檔。

    3.除了將limit和skip作為find函數(shù)的參數(shù)外,還可以單獨(dú)使用limit和skip函數(shù)來(lái)修飾查詢(xún)結(jié)果。

    例如:db.student.find({age:{$lt:22}}).limit(5).skip(10)

    4.返回的查詢(xún)結(jié)果集默認(rèn)是無(wú)序的,如果需要對(duì)結(jié)果進(jìn)行排序,可以使用sort函數(shù)。1表示升序-1為降序。

    例如:db.student.find().sort({name:1,age:-1})

    5.db.collection.findOne()只會(huì)返回第一條數(shù)據(jù)。

    6.當(dāng)查詢(xún)的集合文檔數(shù)量很大時(shí),為了加快數(shù)據(jù)的查詢(xún)速度可以創(chuàng)建索引。

    7.除了使用find函數(shù)實(shí)現(xiàn)基本查詢(xún)之外,MongoDB還提供了聚合框架,用于復(fù)雜查詢(xún)。

二、查詢(xún)操作符介紹及使用

    (1)比較查詢(xún)操作符

MongoDB筆記(三)

    (2)邏輯查詢(xún)操作符

    邏輯查詢(xún)操作符,可連接多個(gè)查詢(xún)條件,用于邏輯與、或、非以及取反操作。

MongoDB筆記(三)

    (3)元素操作符

    元素查詢(xún)操作符,用來(lái)查詢(xún)文檔中字段的屬性,包括字段是否存在以及字段的數(shù)據(jù)類(lèi)型。

MongoDB筆記(三)

三、MogoDB的游標(biāo)

    使用find函數(shù)進(jìn)行查詢(xún)時(shí),MongoDB并不是一次返回結(jié)果集中的所有文檔,而是分批次的返回結(jié)果,返回的數(shù)據(jù)量不會(huì)多余4M,默認(rèn)情況下會(huì)返回結(jié)果集的101個(gè)文檔或者1M的數(shù)據(jù)(看哪個(gè)條件先滿足就用誰(shuí))。返回的文檔會(huì)緩存到內(nèi)存中,同時(shí)會(huì)有一個(gè)cursor游標(biāo)指向該批結(jié)果集中的第一個(gè),當(dāng)游標(biāo)遍歷到完最后一個(gè)文檔時(shí),游標(biāo)將自動(dòng)向MongoDB數(shù)據(jù)庫(kù)發(fā)送一個(gè)getMore數(shù)據(jù)請(qǐng)求得到下一批的結(jié)果集。

MongoDB筆記(三)

    (1)使用游標(biāo)時(shí)要注意下面幾個(gè)問(wèn)題。

    1.當(dāng)調(diào)用find函數(shù)時(shí),shell并不立即查詢(xún)數(shù)據(jù)庫(kù),而是等真正開(kāi)始游標(biāo)的hasNext使用時(shí)(獲取結(jié)果時(shí))才發(fā)送查詢(xún)請(qǐng)求。

    2.游標(biāo)對(duì)象的每個(gè)方法幾乎都返回游標(biāo)對(duì)象本身,這樣就可以方便的進(jìn)行鏈?zhǔn)胶瘮?shù)調(diào)用。

    3.如果不將find函數(shù)返回的游標(biāo)賦值給一個(gè)局部變量進(jìn)行保存的話,默認(rèn)情況下游標(biāo)會(huì)自動(dòng)迭代20次。想要手動(dòng)迭代就必須賦值給一個(gè)局部變量,然后用提供的函數(shù)進(jìn)行迭代。

    (2)游標(biāo)的生命周期(創(chuàng)建、使用以及銷(xiāo)毀)

    當(dāng)客戶端使用find函數(shù)向服務(wù)器端發(fā)起一次查詢(xún)請(qǐng)求時(shí),會(huì)在服務(wù)器端創(chuàng)建一個(gè)游標(biāo),然后就可以使用游標(biāo)函數(shù)來(lái)操作查詢(xún)結(jié)果。

    下面三種情況會(huì)讓游標(biāo)銷(xiāo)毀:

    1.游標(biāo)遍歷完成后,或者客戶端主動(dòng)發(fā)送終止消息。

    2.客戶端保存的游標(biāo)變量不在作用域內(nèi)。

    3.在服務(wù)器端10分鐘內(nèi)未對(duì)游標(biāo)進(jìn)行操作。

    (3)游標(biāo)快照

    游標(biāo)因?yàn)闆](méi)有隔離性,所以游標(biāo)可能會(huì)返回那些由于體積變大而被移動(dòng)到集合末尾的文檔。為解決這一問(wèn)題的方法是對(duì)查詢(xún)進(jìn)行快照。其語(yǔ)法如下:

    db.collection.find().snapshot()

    使用快照后,查詢(xún)就會(huì)在_id索引上來(lái)遍歷執(zhí)行,這樣就可以保證每個(gè)文檔只會(huì)被返回一次,從而保證獲取結(jié)果的一致性。但快照會(huì)使得查詢(xún)速度變慢,使用需謹(jǐn)慎。

四、findAndModify函數(shù)的使用

MongoDB筆記(三)

    findAndModify與update函數(shù)的比較:

    1.都以原子的方式來(lái)更新修改文檔

    2.當(dāng)多個(gè)文檔滿足query條件時(shí):

    ①findAndModify使用sort選項(xiàng),對(duì)結(jié)果排序,選擇第幾個(gè)文檔。

    ②update不能選擇具體更新哪一個(gè)文檔。

    3.update可以一次修改多個(gè)文檔,findAndModify不行。

    4.update可以設(shè)置寫(xiě)的安全級(jí)別findAndModify不行。


網(wǎng)頁(yè)名稱(chēng):MongoDB筆記(三)
新聞來(lái)源:http://weahome.cn/article/jjepod.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部