欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

MongoDB增刪改查之查詢(xún)?cè)趺磳?shí)現(xiàn)-創(chuàng)新互聯(lián)

這篇文章主要介紹MongoDB增刪改查之查詢(xún)?cè)趺磳?shí)現(xiàn),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

安吉ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!

詳述

1.簡(jiǎn)單查詢(xún):

>db.t1.find()
{ "_id" : ObjectId("585ce007d993c80e8713c7bd"), "x" : 1, "j" : 1 }
{ "_id" : ObjectId("585ce007d993c80e8713c7be"), "x" : 4, "j" : 2 }
{ "_id" : ObjectId("585ce007d993c80e8713c7bf"), "x" : 2, "j" : 3 }
{ "_id" : ObjectId("585ce008d993c80e8713c7c0"), "x" : 4, "j" : 4 }
{ "_id" : ObjectId("585ce023d993c80e8713c7c2"), "x" : 3 }

2.排序查詢(xún):

>db.t1.find().sort({j:-1})     ---"1"表示升序,“-1”表示降序
{ "_id" : ObjectId("585ce008d993c80e8713c7c0"), "x" : 4, "j" : 4 }
{ "_id" : ObjectId("585ce007d993c80e8713c7bf"), "x" : 2, "j" : 3 }
{ "_id" : ObjectId("585ce007d993c80e8713c7be"), "x" : 4, "j" : 2 }
{ "_id" : ObjectId("585ce007d993c80e8713c7bd"), "x" : 1, "j" : 1 }
{ "_id" : ObjectId("585ce023d993c80e8713c7c2"), "x" : 3 }

3. 條件查詢(xún):

> db.t1.find({x:2})
{ "_id" : ObjectId("585ce007d993c80e8713c7bf"), "x" : 2, "j" : 3 }

4.多條件查詢(xún)

> db.t1.find({x:2,j:3})
{ "_id" : ObjectId("585ce007d993c80e8713c7bf"), "x" : 2, "j" : 3 }

5.比較條件查詢(xún)

>db.t1.find({j:{$gt:2,$lte:4}})          ---查詢(xún)j字段大于2,小于等于4的記錄
{ "_id" : ObjectId("585ce007d993c80e8713c7bf"), "x" : 2, "j" : 3 }
{ "_id" : ObjectId("585ce008d993c80e8713c7c0"), "x" : 4, "j" : 4 }

比較運(yùn)算符:

  • $gt:大于

  • $lt:小于

  • $gte:大于等于

  • $lte:小于等于

  • $ne:不等于

6.多個(gè)值in查詢(xún)(類(lèi)似IN)

> db.t1.find({j:{$in:[1,4]}})          ---j=1或j=4的記錄,不包括可以用$nin
{ "_id" : ObjectId("585ce007d993c80e8713c7bd"), "x" : 1, "j" : 1 }
{ "_id" : ObjectId("585ce008d993c80e8713c7c0"), "x" : 4, "j" : 4 }

7.多個(gè)值and查詢(xún)(類(lèi)似AND)

> db.t1.find({x:1,j:{$gt:1}})          ---x=1 and j>1條件記錄
{ "_id" : ObjectId("585ce007d993c80e8713c7be"), "x" : 1, "j" : 2 }
{ "_id" : ObjectId("585ce007d993c80e8713c7bf"), "x" : 1, "j" : 3 }

8.多個(gè)值or查詢(xún)(類(lèi)似OR)

> db.t1.find({$or:[{x:4},{j:{$lte:2}}]})     ---x=4 or j<=2的條件記錄
{ "_id" : ObjectId("585ce007d993c80e8713c7bd"), "x" : 1, "j" : 1 }
{ "_id" : ObjectId("585ce007d993c80e8713c7be"), "x" : 1, "j" : 2 }
{ "_id" : ObjectId("585ce008d993c80e8713c7c0"), "x" : 4, "j" : 4 }

9.多個(gè)值or and 查詢(xún)

> db.t1.find({x:1,$or:[{j:{$lt:2}},{j:3}]})     ---x=1 and (j<2 or j=3)
{ "_id" : ObjectId("585ce007d993c80e8713c7bd"), "x" : 1, "j" : 1 }
{ "_id" : ObjectId("585ce007d993c80e8713c7bf"), "x" : 1, "j" : 3 }

10.查詢(xún)表中不包括 j 字段的記錄

>db.t6.find({j:{$exists:false}})          ---查詢(xún)包含j字段的話(huà),就是$exists:true
{ "_id" : ObjectId("585ce023d993c80e8713c7c2"), "x" : 3 }

11.只返回某個(gè)字段或某些字段

> db.t1.find({x:4},{j:1})    ---默認(rèn)顯示所有字段值,第二個(gè)大括號(hào)使用j:1表示只返回j字段,但主鍵_id默認(rèn)顯示
{ "_id" : ObjectId("585ce008d993c80e8713c7c0"), "j" : 4 }
{ "_id" : ObjectId("585ce007d993c80e8713c7be"), "j" : 2 }

12.如何想要消除主鍵_id的返回

> db.t1.find({x:4},{j:1,_id:0})
{ "j" : 4 }
{ "j" : 2 }

嵌套子文檔查詢(xún)

原數(shù)據(jù)表:

> db.t6.find()
{ "_id" : 1, "x" : 2, "kk" : { "deviceID" : 222, "city" : "Tianjin" } }
{ "_id" : 2, "x" : 3, "kk" : { "deviceID" : 333, "city" : "Beijing" } }
{ "_id" : 3, "x" : 2, "kk" : { "deviceID" : 234 } }

查詢(xún)嵌套子文檔中的字段,可以用點(diǎn)來(lái)連接外字段與內(nèi)嵌字段,可能不太明白是什么意思,沒(méi)關(guān)系,直接看如下舉例即可明白;

13.根據(jù)子文檔中某幾個(gè)字段的值進(jìn)行匹配查詢(xún):

> db.t6.find({kk:{deviceID:222,city:"Tianjin"}})    ---查詢(xún)kk子文檔中deviceID=222且city:"Tianjin"的記錄
{ "_id" : 1, "x" : 2, "kk" : { "deviceID" : 222, "city" : "Tianjin" } }

或者使用如下形式

> db.t6.find({"kk.deviceID":222,"kk.city":"Tianjin"})    ---與上一個(gè)方法一樣的效果,注意雙引號(hào)的使用
{ "_id" : 1, "x" : 2, "kk" : { "deviceID" : 222, "city" : "Tianjin" } }

14.查詢(xún)嵌套文檔中不存在city字段得數(shù)據(jù)

> db.getCollection('t6').find({"kk.city":{$exists:false}})
{ "_id" : 3, "x" : 2, "kk" : { "deviceID" : 234 } }

15.查詢(xún)結(jié)果只想返回子文檔中的某些字段值

> db.t6.find({},{"kk.deviceID":1,_id:0})
{ "kk" : { "deviceID" : 222 } }
{ "kk" : { "deviceID" : 333 } }
{ "kk" : { "deviceID" : 234 } }

另:當(dāng)然關(guān)于嵌套子文檔還有更多更復(fù)雜的查詢(xún)語(yǔ)句,主要還是看你嵌套文檔中的數(shù)據(jù)結(jié)構(gòu)而定,結(jié)構(gòu)越復(fù)雜,那么需要寫(xiě)的查詢(xún)語(yǔ)句就越復(fù)雜。

數(shù)組查詢(xún)

MongoDB中數(shù)組的查詢(xún)也是比較繁瑣的,因?yàn)楫吘蛊渌P(guān)系型數(shù)據(jù)庫(kù)中不包含此種數(shù)據(jù)類(lèi)型。不過(guò)沒(méi)關(guān)系,我盡量將我能想到的場(chǎng)景羅列于此,方便你我查找。

原數(shù)據(jù)表:

> db.t5.find()
{ "_id" : 1, "x" : 2, "Course" : [ "English", "Math" ], "score" : [ 1, 3 ] }
{ "_id" : 2, "x" : 3, "Course" : [ "Math", "English" ], "score" : [ 18, 12 ] }
{ "_id" : 3, "x" : 4, "Course" : [ "English" ], "score" : [ 98, 1 ] }
{ "_id" : 4, "x" : 5, "Course" : [ "Yuwen", "English" ], "score" : [ 45, 46 ] }
{ "_id" : 5, "x" : 7, "Course" : [ "Math" ], "score" : [ 99, 100 ] }

16.精確查詢(xún)數(shù)組中元素

要求:使用{<field>: <value>}形式;

舉例1:匹配一個(gè)元素

> db.t5.find({Course:"Math"})    ---查詢(xún)到的是所有包含“Math”元素的行
{ "_id" : 1, "x" : 2, "Course" : [ "English", "Math" ], "score" : [ 1, 3 ] }
{ "_id" : 2, "x" : 3, "Course" : [ "Math", "English" ], "score" : [ 18, 12 ] }
{ "_id" : 5, "x" : 7, "Course" : [ "Math" ], "score" : [ 99, 100 ] }

舉例2:精確查詢(xún)多元素

> db.t5.find({Course:["Math","English"]})    
{ "_id" : 2, "x" : 3, "Course" : [ "Math", "English" ], "score" : [ 18, 12 ] }

注意: 上述語(yǔ)句只會(huì)查詢(xún)到一行,而另外一筆也包含“Math”和“English”的數(shù)據(jù)雖然包含的元素一樣,但是元素順序不一致。所以未被列出

舉例3: 精確查詢(xún)一個(gè)元素(按元素位置)

> db.t5.find({"Course.1":"English"})    ---精確查詢(xún)數(shù)組中第2個(gè)元素是“English”
{ "_id" : 2, "x" : 3, "Course" : [ "Math", "English" ], "score" : [ 18, 12 ] }
{ "_id" : 4, "x" : 5, "Course" : [ "Yuwen", "English" ], "score" : [ 45, 46 ] }

17.指定多條件查詢(xún)數(shù)組

要求:使用$elemMatch操作符;

舉例1:只要求數(shù)組中有一個(gè)元素滿(mǎn)足所有條件

> db.t5.find({score:{$elemMatch:{$gt:15,$lt:20}}})    ---也就只有18>15,且18<20
{ "_id" : 2, "x" : 3, "Course" : [ "Math", "English" ], "score" : [ 18, 12 ] }

舉例2: 要求數(shù)組中各個(gè)元素只滿(mǎn)足一部分篩選條件,但是組合起來(lái)可以滿(mǎn)足所有條件

> db.t5.find({score:{$gt:15,$lt:20}})
{ "_id" : 2, "x" : 3, "Course" : [ "Math", "English" ], "score" : [ 18, 12 ] }
{ "_id" : 3, "x" : 4, "Course" : [ "English" ], "score" : [ 98, 1 ] }

另:上述舉例,你可能會(huì)迷糊,為什么[98,1]可以入選呢?因?yàn)?<20,且98>15,所以滿(mǎn)足查詢(xún)條件,明白了吧?

18.獲取數(shù)組字段的數(shù)組長(zhǎng)度

>db.t5.find({_id:5}).forEach(function(x){ 
      var score=x.score;
      var scoreLenth=score.length;
      print(scoreLenth);
});
2    ---返回結(jié)果

查看數(shù)組不為空:

>db.t9.find({arrary:{$elemMatch:{$ne:null}})

正則表達(dá)式

> db.t4.find()
{ "_id" : ObjectId("58aa8e4c151e4fd0af703688"), "name" : "Jack", "addr" : "tianjin" }
{ "_id" : ObjectId("58aa8e5e151e4fd0af703689"), "name" : "Tom", "addr" : "beijing" }
{ "_id" : ObjectId("58aa9c25151e4fd0af70368a"), "name" : "Nick J" }

19.查詢(xún)name以J開(kāi)頭的記錄

> db.t4.find({name:/^J/})                 ---查詢(xún)以J開(kāi)頭的記錄
{ "_id" : ObjectId("58aa8e4c151e4fd0af703688"), "name" : "Jack", "addr" : "tianjin" }

20.查詢(xún)不以J開(kāi)頭的記錄

> db.t4.find({name:{$not:/^J/}})          ---查詢(xún)不以J開(kāi)頭的記錄
{ "_id" : ObjectId("58aa8e5e151e4fd0af703689"), "name" : "Tom", "addr" : "beijing" }
{ "_id" : ObjectId("58aa9c25151e4fd0af70368a"), "name" : "Nick J" }

21.查詢(xún)name重包含J的記錄

> db.t4.find({name:/J/})                    ---查詢(xún)name重包含J的記錄
{ "_id" : ObjectId("58aa8e4c151e4fd0af703688"), "name" : "Jack", "addr" : "tianjin" }
{ "_id" : ObjectId("58aa9c25151e4fd0af70368a"), "name" : "Nick J" }

查詢(xún)Null或者不存在的字段

原集合數(shù)據(jù):

> db.t8.find()
{ "_id" : 99, "name" : null }
{ "_id" : 100 }

22.查詢(xún)name:null的記錄:

> db.t8.find({name:null})        ---出現(xiàn)這樣的結(jié)果,是因?yàn)檫@樣的查詢(xún)方式會(huì)返回name=null且不存在name字段的記錄
{ "_id" : 99, "name" : null }
{ "_id" : 100 }

23.只查詢(xún)name:null的數(shù)據(jù),不包含name字段的不返回

> db.t8.find({name:{$type:10}})          ---可以使用$type,10其實(shí)就代表了null這個(gè)數(shù)據(jù)類(lèi)型
{ "_id" : 99, "name" : null }

24.只返回不包含name字段的數(shù)據(jù)

> db.t8.find({name:{$exists:false}})          ---如果只查詢(xún)存在name字段的記錄,則$exists:true
{ "_id" : 100 }

迭代查詢(xún)

find()查詢(xún)之后返回的是一個(gè)cursor游標(biāo),在mongo shell默認(rèn)情況下迭代20次顯示前20個(gè)文檔記錄

如果使用變量迭代結(jié)果集的話(huà):

> var a=db.t6.find()          ---定義變量
> while(a.hasNext()){          ---判斷變量游標(biāo)位置
... printjson(a.next());          ---打印游標(biāo)內(nèi)容
... }
{ "_id" : 1, "x" : 2, "kk" : { "deviceID" : 222, "city" : "Tianjin" } }
{ "_id" : 2, "x" : 2, "kk" : { "deviceID" : 222, "addr" : "Heping" } }

或者使用forEach()

> var a=db.t6.find()
> a.forEach(printjson)
{ "_id" : 1, "x" : 2, "kk" : { "deviceID" : 222, "city" : "Tianjin" } }
{ "_id" : 2, "x" : 2, "kk" : { "deviceID" : 222, "addr" : "Heping" } }

使用toArry()逐一查詢(xún)結(jié)果集

> var a=db.t6.find()          ---定義變量
> var doc=a.toArray()          ---使用toArray()生成數(shù)組結(jié)果集
> doc[0]                         ---查詢(xún)結(jié)果集中第一個(gè)文檔
{ "_id" : 1, "x" : 2, "kk" : { "deviceID" : 222, "city" : "Tianjin" } }

以上是“MongoDB增刪改查之查詢(xún)?cè)趺磳?shí)現(xiàn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

本文題目:MongoDB增刪改查之查詢(xún)?cè)趺磳?shí)現(xiàn)-創(chuàng)新互聯(lián)
文章出自:http://aaarwkj.com/article36/dophpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、品牌網(wǎng)站制作、ChatGPT自適應(yīng)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作

廣告

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

微信小程序開(kāi)發(fā)
一区二区亚洲免费的视频| 天天操夜夜操白天操晚上操| 亚洲综合色一区二区三区四区| 国产成人三级在线影院| 日本经典三级在线视频| 国产欧美日韩91成人| 亚洲一区二区三区不卡视频| 精品人妻二区中文字幕| 日韩亚洲一区二区免费| 精品啪在线观看国产熟女| 国产精品三级国产精品高| 色婷婷亚洲婷婷亚洲最大| 少妇一区二区三区免费| 国产精品偷伦一区二区| 成人久久精品一区二区| 91久久精品国产免费一区| 国产精品欧美一区二区视频| 国产一边打电话一边操| 开心久久婷婷综合中文字幕| 日本一区二区精品视频| 日本五十路亲子在线一区| 麻豆专区一区二区三区| 亚洲欧美日韩一区91| 精品国产a级黄毛网站| 欧美日韩精品视频专区| 亚洲成在人线免费观看| 日本欧美自拍偷拍高清| 中文字幕日韩人妻一二三区| 双高干文男女主都很强| 欧美日韩亚洲国产三级| 精品久久一区麻豆香蕉| 人妻少妇久久中文字幕久久| 中文字幕精品一区二区三区视频| 日韩中文不卡人成在线视频| 日韩丰满少妇在线观看| 少妇高潮试看二十分钟| 一区二区三区免费视频少妇| 99国产精品的热久久| 日韩亚洲av在线免费观看| 白白色手机视频免费看| 偷拍一区二区三区免费|