MongoDB的查詢-創(chuàng)新互聯(lián)

    MongoDB使用find來查詢,不指定任何參數(shù)說明是對(duì)整個(gè)集合的文檔查詢。

創(chuàng)新互聯(lián)長(zhǎng)期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為新會(huì)企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站設(shè)計(jì),新會(huì)網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
  1. find查詢

    指定返回的鍵

    有時(shí)并不需要將文檔中所有鍵值對(duì)都返回,可以通過find(或者findOne)的第二個(gè)參數(shù)來制定想要的鍵,這樣即會(huì)節(jié)省傳輸?shù)臄?shù)據(jù)量,又能節(jié)省客戶端解碼文檔的時(shí)間和內(nèi)存消耗。

例如:

> db.people.find()

{ "_id" : ObjectId("54d08a1d0eb7b5f5718da828"), "name" : "joe", "friends" : 32,

"enemies" : 2 }

{ "_id" : ObjectId("54d08f7f0eb7b5f5718da82a"), "name" : "joe", "age" : 65 }

{ "_id" : ObjectId("54d08fb70eb7b5f5718da82b"), "name" : "joe", "age" : 21 }

{ "_id" : ObjectId("54d08fbd0eb7b5f5718da82c"), "name" : "joe", "age" : 49 }

>

    如果只對(duì)name和age感興趣,可以這樣查詢:

> db.people.find({"name":"joe","age":21})

{ "_id" : ObjectId("54d08fb70eb7b5f5718da82b"), "name" : "joe", "age" : 21 }

>

    但是"_id"總是被返回,即便沒有指定。

    可以使用第二個(gè)參數(shù)來剔除查詢結(jié)果中的某個(gè)鍵值對(duì),例如,如果不希望顯示"friends" : 32的鍵值對(duì):

> db.people.find({},{"friends":0})

{ "_id" : ObjectId("54d08a1d0eb7b5f5718da828"), "name" : "joe", "enemies" : 2 }

{ "_id" : ObjectId("54d08f7f0eb7b5f5718da82a"), "name" : "joe", "age" : 65 }

{ "_id" : ObjectId("54d08fb70eb7b5f5718da82b"), "name" : "joe", "age" : 21 }

{ "_id" : ObjectId("54d08fbd0eb7b5f5718da82c"), "name" : "joe", "age" : 49 }

>

    也可以用來防止返回"_id":

> db.people.find({"age":21},{"_id":0})

{ "name" : "joe", "age" : 21 }

2、查詢條件

    查詢不僅能精確匹配,還能匹配更加復(fù)雜的條件,比如范圍,OR子句或者取反。

2.1、查詢條件

    查詢條件的比較操作符:

"$lt"  對(duì)應(yīng) <

"$lte" 對(duì)應(yīng)<=

"$gt"  對(duì)應(yīng)>

"$gte" 對(duì)應(yīng)>=

"$ne"  對(duì)應(yīng)“不相等”

> db.people.find({"age":{"$gte":30,"$lte":50}})

{ "_id" : ObjectId("54d08fbd0eb7b5f5718da82c"), "name" : "joe", "age" : 49 }

> db.people.find({"age":{"$ne":65}})

{ "_id" : ObjectId("54d08a1d0eb7b5f5718da828"), "name" : "joe", "friends" : 32,

"enemies" : 2 }

{ "_id" : ObjectId("54d08fb70eb7b5f5718da82b"), "name" : "joe", "age" : 21 }

{ "_id" : ObjectId("54d08fbd0eb7b5f5718da82c"), "name" : "joe", "age" : 49 }

    "$ne" 用于所有數(shù)據(jù)的類型。

2.1、OR查詢

    有兩種方式進(jìn)行OR查詢。

    "$in":可以用于查詢一個(gè)鍵的多個(gè)值;

    "$or":完成多個(gè)鍵值的任意給定值。

2.1.1"$in"

    對(duì)于單一鍵要是有多個(gè)值與其匹配的話,就要用"$in"加一個(gè)條件數(shù)組:

> db.people.find({"age":{"$in":[21,49,65]}})

{ "_id" : ObjectId("54d08f7f0eb7b5f5718da82a"), "name" : "joe", "age" : 65 }

{ "_id" : ObjectId("54d08fb70eb7b5f5718da82b"), "name" : "joe", "age" : 21 }

{ "_id" : ObjectId("54d08fbd0eb7b5f5718da82c"), "name" : "joe", "age" : 49 }

>

    "$in"非常靈活,可以指定不同類型的條件和值:

> db.people.insert({"age":"kkk"})

WriteResult({ "nInserted" : 1 })

> db.people.find({"age":{"$in":[21,"kkk"]}})

{ "_id" : ObjectId("54d08fb70eb7b5f5718da82b"), "name" : "joe", "age" : 21 }

{ "_id" : ObjectId("54d334cbb174be28d017c1a6"), "age" : "kkk" }

>

    要是"$in"對(duì)應(yīng)的數(shù)組只有一個(gè)值,那么和直接匹配這個(gè)值的效果是一樣的。

> db.people.find({"age":{"$in":[21]}})

{ "_id" : ObjectId("54d08fb70eb7b5f5718da82b"), "name" : "joe", "age" : 21 }

> db.people.find({"age":21})

{ "_id" : ObjectId("54d08fb70eb7b5f5718da82b"), "name" : "joe", "age" : 21 }

>

2.1.1"$nin"

    和"$in"相對(duì)的是"$nin",將返回與數(shù)組中所有條件都不匹配的文檔:

> db.people.find({"age":{"$nin":[21,49,65]}})

{ "_id" : ObjectId("54d08a1d0eb7b5f5718da828"), "name" : "joe", "friends" : 32,

"enemies" : 2 }

{ "_id" : ObjectId("54d334cbb174be28d017c1a6"), "age" : "kkk" }

>

2.1.1"$or"

      "$or"接受一個(gè)包含所有可能條件的數(shù)組作為參數(shù):

> db.people.find({"$or":[{"age":"kkk"},{"friends":32}]})

{ "_id" : ObjectId("54d08a1d0eb7b5f5718da828"), "name" : "joe", "friends" : 32,

"enemies" : 2 }

{ "_id" : ObjectId("54d334cbb174be28d017c1a6"), "age" : "kkk" }

>

    同時(shí)"$or"可以包含其他條件句:

> db.people.find({"$or":[{"age":"kkk"},{"friends":32},{"age":{"$in":[21,65]}}]})

{ "_id" : ObjectId("54d08a1d0eb7b5f5718da828"), "name" : "joe", "friends" : 32,

"enemies" : 2 }

{ "_id" : ObjectId("54d08f7f0eb7b5f5718da82a"), "name" : "joe", "age" : 65 }

{ "_id" : ObjectId("54d08fb70eb7b5f5718da82b"), "name" : "joe", "age" : 21 }

{ "_id" : ObjectId("54d334cbb174be28d017c1a6"), "age" : "kkk" }

>

    AND型的查詢,總是盡可能地用最少的條件來限定結(jié)果的范圍;而OR型的查詢則相反,第一個(gè)條件盡可能地匹配更多的文檔,這樣才是高效的。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文標(biāo)題:MongoDB的查詢-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://bm7419.com/article20/ceopco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管微信公眾號(hào)、網(wǎng)站策劃動(dòng)態(tài)網(wǎng)站、企業(yè)建站網(wǎng)站收錄

廣告

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

搜索引擎優(yōu)化