欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎樣進(jìn)行MongoDB文檔查詢操作

這篇文章將為大家詳細(xì)講解有關(guān)怎樣進(jìn)行MongoDB文檔查詢操作,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

成都創(chuàng)新互聯(lián)公司主要從事成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)建始,十多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

null

null的查詢稍微有點(diǎn)不同,假如我想查詢z為null的數(shù)據(jù),如下:

db.sang_collect.find({z:null})

這樣不僅會查出z為null的文檔,也會查出所有沒有z字段的文檔,如果只想查詢z為null的字段,那就再多加一個條件,判斷一下z這個字段存在不,如下:

db.sang_collect.find({z:{$in:[null],$exists:true}})

正則表達(dá)式查詢

使用正則表達(dá)式查詢我們在前面也已經(jīng)介紹過了,這里的正則表達(dá)式語法和JavaScript中的正則表達(dá)式語法一致,比如查詢所有key為x,value以hello開始的文檔且不區(qū)分大小寫:

db.sang_collec.find({x:/^(hello)(.[a-zA-Z0-9])+/i})

數(shù)組查詢

假設(shè)我有一個數(shù)據(jù)集如下:

{
    "_id" : ObjectId("59f1ad41e26b36b25bc605ae"),
    "books" : [ 
        "三國演義", 
        "紅樓夢", 
        "水滸傳"
    ]
}

查詢books中含有三國演義的文檔,如下:

db.sang_collect.find({books:"三國演義"})

如果要查詢既有三國演義又有紅樓夢的文檔,可以使用$all,如下:

db.sang_collect.find({books:{$all:["三國演義","紅樓夢"]}})

當(dāng)然我們也可以使用精確匹配,比如查詢books為"三國演義","紅樓夢", "水滸傳"的數(shù)據(jù),如下:

db.sang_collect.find({books:["三國演義","紅樓夢", "水滸傳"]})

不過這種就會一對一的精確匹配。

也可以按照下標(biāo)匹配,比如我想查詢數(shù)組中下標(biāo)為2的項的為"水滸傳"的文檔,如下:

db.sang_collect.find({"books.2":"水滸傳"})

也可以按照數(shù)組長度來查詢,比如我想查詢數(shù)組長度為3的文檔:

db.sang_collect.find({books:{$size:3}})

如果想查詢數(shù)組中的前兩條數(shù)據(jù),可以使用$slice,如下:

db.sang_collect.find({},{books:{$slice:2}})

注意這里要寫在find的第二個參數(shù)的位置。2表示數(shù)組中前兩個元素,-2表示從后往前數(shù)兩個元素。也可以截取數(shù)組中間的元素,比如查詢數(shù)組的第二個到第四個元素:

db.sang_collect.find({},{books:{$slice:[1,3]}})

數(shù)組中的與的問題也值得說一下,假設(shè)我有如下數(shù)據(jù):

{
    "_id" : ObjectId("59f208bc7b00f982986c669c"),
    "x" : [ 
        5.0, 
        25.0
    ]
}

我想將數(shù)組中value取值在(10,20)之間的文檔獲取到,如下操作:

db.sang_collect.find({x:{$lt:20,$gt:10}})

此時上面這個文檔雖然不滿足條件卻依然被查找出來了,因為5<20,而25>10,要解決這個問題,我們可以使用$elemMatch,如下:

db.sang_collect.find({x:{$elemMatch:{$lt:20,$gt:10}}})

$elemMatch要求MongoDB同時使用查詢條件中的兩個語句與一個數(shù)組元素進(jìn)行比較。

嵌套文檔查詢

嵌套文檔有兩種查詢方式,比如我的數(shù)據(jù)如下:

{
    "_id" : ObjectId("59f20c9b7b00f982986c669f"),
    "x" : 1.0,
    "y" : {
        "z" : 2.0,
        "k" : 3.0
    }
}

想要查詢上面這個文檔,我的查詢語句如下:

db.sang_collect.find({y:{z:2,k:3}})

但是這種寫法要求嚴(yán)格匹配,順序都不能變,假如寫成了db.sang_collect.find({y:{k:3,z:2}}),就匹配不到了,因此這種方法不夠靈活,我們一般推薦的是下面這種寫法:

db.sang_collect.find({"y.z":2,"y.k":3})

這種寫法可以任意顛倒順序。

關(guān)于怎樣進(jìn)行MongoDB文檔查詢操作就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

分享名稱:怎樣進(jìn)行MongoDB文檔查詢操作
網(wǎng)站路徑:http://chinadenli.net/article22/gspdcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站外貿(mào)建站企業(yè)建站品牌網(wǎng)站建設(shè)App開發(fā)品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司