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

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

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

一、普通查詢

創(chuàng)新互聯(lián)公司專業(yè)IDC數(shù)據(jù)服務(wù)器托管提供商,專業(yè)提供成都服務(wù)器托管,服務(wù)器租用,聯(lián)通機(jī)房服務(wù)器托管,聯(lián)通機(jī)房服務(wù)器托管,成都多線服務(wù)器托管等服務(wù)器托管服務(wù)。

find方法語法:

 find([條件,需顯示的字段]);

注意:

 1、如果沒有條件,則查詢?nèi)?/p>

 2、如果沒有顯示指定_id字段隱藏,則默認(rèn)會(huì)顯示,顯示指定隱藏,如:find({},{"_id":0});

1.1、查看集合中所有的文檔

命令:db.集合名稱.find();

MongoDB(3): 查詢

1.2、查看集合中第一個(gè)文檔

命令:db.集合名稱.findOne({條件對(duì)象});

MongoDB(3): 查詢

1.3、指定需要返回的鍵

在find方法的第二個(gè)參數(shù)進(jìn)行指定。默認(rèn)情況下,始終會(huì)返回”_id”,可以通過設(shè)置字段為0來表示不返回這個(gè)字段。

MongoDB(3): 查詢

二、條件查詢

find方法語法:

 find([條件,需顯示的字段]);

在find方法里面加入條件數(shù)據(jù)即可,find方法的第一個(gè)參數(shù)就是。

注意:條件數(shù)據(jù)必須是常量值,不能是另外的字段的數(shù)據(jù)

1:比較操作

 $lt:小于

 $lte:小于等于

 $gt:大于

 $gte:大于等于

 $ne:不等于

 如:a、age小于20

  > db.test1.find({"age":{$lt:20}});

  b、age小于20,大于10

  > db.test1.find({"age":{$lt:20,$gt:10}});

2:$and:包含多個(gè)條件,他們之間為and的關(guān)系

> db.test1.find({$and:[{"userId":2},{"username":"lisi"}]});

 等價(jià)于下面:

> db.test1.find({"userId":2,"username":"lisi"});

3:$or :包含多個(gè)條件,他們之間為or的關(guān)系 ,$nor相當(dāng)于or取反

 操作方式與$and差不多

4:$not:用作其他條件之上,取反

> db.test1.find({"userId":{$not:{$ne:3}}}); > db.test1.find({"userId":{$not:/1/}});

5:$mod:將查詢的值除以第一個(gè)給定的值,如果余數(shù)等于等二個(gè)值則匹配成功

> db.test1.find({"age":{$mod:[100,3]}});

說明:

 age除以100,如果余數(shù)為3,則滿足條件

6:$in :查詢一個(gè)鍵的多個(gè)值,只要鍵匹配其中一個(gè)即可 , $nin為不包含

> db.test1.find({"userId":{$in:[1,2]}});

7:$all:鍵需要匹配所有的值

> db.test1.find({"userId":{$all:[1,2]}});

8:$exists:檢查某個(gè)鍵是否存在,1表示存在,0表示不存在

> db.test1.find({"userId":{$exists:1}});

9:null類型:不僅能匹配鍵的值為null,還匹配鍵不存在的情況

> db.test1.find({"age":null});

三、正則表達(dá)式

MongoDB使用Perl兼容的正則表達(dá)式(PCRE),比如:

db.users.find({“name”:/sishuok/i}); 又比如:

db.users.find({“name”:/^sishuok/});

四、查詢數(shù)組

1:?jiǎn)蝹€(gè)元素匹配,就跟前面寫條件一樣,{key:value}

> db.test1.find({"score":5});

2:多個(gè)元素匹配,使用$all, {key:{$all:[a,b]}},元素的順序無所謂

> db.test1.find({"score":{$all:[7,2]}});

3:可以使用索引指定查詢數(shù)組特定位置, {“key.索引號(hào)”:value}

> db.test1.find({"score.1":7});

4:查詢某個(gè)長度的數(shù)組,使用$size

> db.test1.find({"score":{$size:5}})

5:指定子集,使用$slice,正數(shù)是前面多少條,負(fù)數(shù)是尾部多少條,也可以指定偏移量和要返回的元素?cái)?shù)量,比如:$slice:[50,10]

> db.test1.find({},{"score":{$slice:2}});

指定偏移量和要返回的元素?cái)?shù)量,比如:偏移量1,返回兩個(gè)元素:

> db.test1.find({},{"score":{$slice:[1,2]}});

6:可以使用$來指定符合條件的任意一個(gè)數(shù)組元素,如:{”users.$”:1}

> db.test1.find({"score":{$in:[2,5]}},{"score.$":1});

7:$elemMatch:要求同時(shí)使用多個(gè)條件語句來對(duì)一個(gè)數(shù)組元素進(jìn)行比較判斷

> db.test1.find({"score":{$gt:5,$lt:4}}); { "_id" : ObjectId("5925a29652b61a20c53dfd48"), "score" : [ 7 ] } >

說明:上面語句并不是我們想要的,“大于5,小于4”,應(yīng)該是不存在的,這里如果想讓其生效,相當(dāng)于and,則使用:$elemMatch

> db.test1.find({"score":{$elemMatch:{$gt:5,$lt:4}}}); >

五、查詢內(nèi)嵌文檔

1:查詢整個(gè)內(nèi)嵌文檔與普通查詢是一樣的

 MongoDB(3): 查詢

2:如果要指定鍵值匹配,可以使用“.” 操作符,比如:{“name.first”:”a”,“name.last”:”b”}

> db.test1.find({"user.id":1}); { "_id" : ObjectId("5925a2a552b61a20c53dfd49"), "user" : { "id" : 1, "username" : "zhangsan" } } >

3:如果要正確的指定一組條件,那就可能需要使用$elemMatch,以實(shí)現(xiàn)對(duì)內(nèi)嵌文檔的多個(gè)鍵進(jìn)行匹配操作

 只有內(nèi)嵌文檔中的有key的值是數(shù)組

注意:內(nèi)嵌文檔的查詢必須要整個(gè)文檔完全匹配

4:$where查詢

在查詢中執(zhí)行任意的JavaScript,通過編程來解決查詢的匹配問題,方法返回boolean值。

> function t1() { ... for(var a in this) { ...  if (a.userId==2) { ...   return true; ...  } ... } ... return false; ... }; > db.test1.find({$where:t1});

如果返回true,文檔作為結(jié)果的一部分被返回;如果為false,則不會(huì)返回。

使用的時(shí)候:db.users.find({"$where":t1});

注意:$where性能較差,安全性也是問題,所以不到萬不得已,不要使用

還可以這樣:

> db.test1.find({$where:"this.userId==1"});

六、分頁與其它相關(guān)

6.1、查詢記錄條數(shù)的命令:count

1:直接使用count()的話,得到的是整個(gè)記錄的條數(shù)

> db.test1.find().count(); 4

2:如果要獲取按條件查詢后記錄的條數(shù),需要指定count(true或者非0的數(shù))

> db.test1.find().limit(2).count(); 4 > db.test1.find().limit(2).count(1); 2 >

6.2、限制返回的記錄條數(shù)的命令:limit(要返回的條數(shù))

> db.test1.find().limit(2); { "_id" : ObjectId("5925a29652b61a20c53dfd48"), "userId" : "1", "age" : 13, "score" : [ 7, 7, 2, 5, 4 ] } { "_id" : ObjectId("5925a2a552b61a20c53dfd49"), "user" : { "id" : 1, "username" : "zhangsan" } } >

6.3、限制返回的記錄條數(shù)起點(diǎn)的命令:skip(從第幾條開始返回)

> db.test1.find().skip(2).limit(2); { "_id" : ObjectId("5926b15e52b61a20c53dfd4a"), "user" : { "id" : 2, "username" : "lisi" } } { "_id" : ObjectId("5926b6ce31e6d30b1b5084cd"), "userId" : 5, "name" : "zhangsan" } >

6.4、排序的命令:sort({要排序的字段:1為升序,-1為降序})

> db.test1.find().sort({"userId":1});

對(duì)多個(gè)字段進(jìn)行排序:

> db.test1.find().sort({"userId":1,"username":1});

MongoDB處理不同類型的數(shù)據(jù)是有一定順序的,有時(shí)候一個(gè)鍵有多種類型的值,其排序順序是預(yù)先定義好的,從小到大如下:

(1)最小值 (2)null (3)數(shù)字 (4)字符串

(5)對(duì)象/文檔 (6)數(shù)組 (7)二進(jìn)制數(shù)據(jù) (8)對(duì)象id

(9)布爾類型 (10)日期型 (11)時(shí)間戳 (12)正則表達(dá)式

(13)大值

6.5、分頁查詢:組合使用limit,skipt和sort

數(shù)據(jù)量比較小時(shí),建議使用;當(dāng)數(shù)據(jù)量比較大時(shí),建議使用其他方式來分頁,比如采用自定義的id,然后根據(jù)id來分頁

skipt的檢索方式:如果有100條數(shù)據(jù),我想要第59條,那么skipt也會(huì)檢索出前面58條,只是在第59條時(shí)返回。

6.6、查詢給定鍵的所有不重復(fù)的數(shù)據(jù),命令:distinct

語法:db.runCommand({“distinct”:集合名,“key”:”獲得不重復(fù)數(shù)據(jù)的字段”});

> db.runCommand({"distinct":"test1","key":"userId"}); { "values" : [ "1", 5 ], "ok" : 1 }

七、游標(biāo)

1:獲取游標(biāo),示例如下:

> var c = db.test1.find();

2:循環(huán)游標(biāo),可以用集合的方式,示例如下:

> while(c.hasNext()){ ... printjson(c.next()); ... }

3:也可以使用forEach來循環(huán),示例如下:

> c.forEach(function(obj){  ... printjson(obj);  ... });

效果:

MongoDB(3): 查詢

八、存儲(chǔ)過程

1:MongoDB的存儲(chǔ)過程其實(shí)就是個(gè)自定義的js函數(shù)

> var addf = function(a,b){ ... return a+b; ... } >

2:使用db.system.js.save({“_id”:名稱,value:函數(shù)})存儲(chǔ)函數(shù);

> db.system.js.save({"_id":"myF","value":addf});

3:可以通過如下命令查看:db.system.js.find();

MongoDB(3): 查詢

4:可以通過如下命令調(diào)用:db.eval(名稱);

MongoDB(3): 查詢

注意:盡量避免使用游標(biāo)與游標(biāo)

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


文章名稱:MongoDB(3):查詢-創(chuàng)新互聯(lián)
分享路徑:http://weahome.cn/article/dpegcs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部