亚洲国产精品人久久,亚洲va国产日韩欧美精品色婷婷,久久久久88色偷偷,免费人成黄页在线观看国际

17站長(zhǎng)網(wǎng)

mongodb游標(biāo)的作用是什么?怎樣使用?

2023-3-21 16:03| 查看: 2204 |來源: 互聯(lián)網(wǎng)

游標(biāo)相當(dāng)于C語言的指針,可以定位到某條記錄,在MongoDB中,則是文檔。因此在mongoDB中游標(biāo)也有定義,聲明, 打開,讀取,關(guān)閉這么個(gè)過程。客戶端通過游標(biāo),能夠 ...

游標(biāo)相當(dāng)于C語言的指針,可以定位到某條記錄,在MongoDB中,則是文檔。因此在mongoDB中游標(biāo)也有定義,聲明, 打開,讀取,關(guān)閉這么個(gè)過程?蛻舳送ㄟ^游標(biāo),能夠?qū)崿F(xiàn)對(duì)最終結(jié)果進(jìn)行有效的控制,諸如限制結(jié)果數(shù)量,跳過部分結(jié)果或根據(jù)任意鍵按任意順序的組合對(duì)結(jié)果進(jìn)行各種排序等。

       一、mongoDB游標(biāo)介紹

  db.collection.find()方法返回一個(gè)游標(biāo),對(duì)于文檔的訪問,我們需要進(jìn)行游標(biāo)迭代

  mongoDB的游標(biāo)與關(guān)系型數(shù)據(jù)庫SQL中的游標(biāo)類似,可以通過對(duì)游標(biāo)進(jìn)行(如限制查詢結(jié)果數(shù),跳過的結(jié)果數(shù)等)設(shè)置來控制查詢結(jié)果

  游標(biāo)會(huì)消耗內(nèi)存和相關(guān)系統(tǒng)資源,游標(biāo)使用完后應(yīng)盡快釋放資源

  在mongo shell中,如果返回的游標(biāo)結(jié)果集未指定給某個(gè)var定義的變量,則,游標(biāo)自動(dòng)迭代20次,即輸出前20個(gè)文檔,超出20的情形則需要輸入it來翻頁

  本文內(nèi)容描述手動(dòng)方式來實(shí)現(xiàn)游標(biāo)迭代來訪問文檔或者是用索引迭代

  聲明游標(biāo)

      var cursor = db.collectioName.find(query,projection);

  打開游標(biāo)

      Cursor.hasNext() 判斷游標(biāo)是否已經(jīng)取到盡頭

  讀取數(shù)據(jù)

      Cursor.Next()  取出游標(biāo)的下一個(gè)文檔

  關(guān)閉游標(biāo)

      cursor.close()  此步驟可省略,通常為自動(dòng)關(guān)閉,也可以顯示關(guān)閉

  用while循環(huán)來遍歷游標(biāo)示例

      var mycursor = db.bar.find({_id:{$lte:5}})

      while(mycursor.hasNext()) {

          printjson(mycursor.next());

          }

  游標(biāo)生命周期

      a、游標(biāo)完成匹配結(jié)果的迭代后,它會(huì)清除自身;

      b、客戶端的游標(biāo)已經(jīng)不在作用域內(nèi),驅(qū)動(dòng)程序回向服務(wù)器發(fā)送一條特別的消息,讓其銷毀;

      c、缺省情況下,游標(biāo)在十分鐘內(nèi)沒有使用,游標(biāo)自動(dòng)關(guān)閉或者客戶端已經(jīng)迭代完整個(gè)游標(biāo);

      d、可以通過cursor.noCursorTimeout()來定義游標(biāo)超時(shí)時(shí)間

          如:var myCursor = db.users.find().noCursorTimeout()

      e、對(duì)于自定義超時(shí)時(shí)長(zhǎng)的游標(biāo)可以使用cursor.close() 來關(guān)閉游標(biāo)

          如:db.collection.find(<query>).close()

       二、當(dāng)前環(huán)境及數(shù)據(jù)準(zhǔn)備

 repSetTest:PRIMARY> db.version()

  3.0.12

  //創(chuàng)建包含29個(gè)文檔的集合user

  repSetTest:PRIMARY> for (var i=1;i<30;i++){

  ... db.user.insert({"id":i,"ename":"usr"+i});

  ... }

  WriteResult({ "nInserted" : 1 })

  repSetTest:PRIMARY> db.user.count()

  29

  //查詢集合user上所有文檔

  repSetTest:PRIMARY> db.user.find()

  { "_id" : ObjectId("5804d07fd974b32430ea9748"), "id" : 1, "ename" : "usr1" }

  { "_id" : ObjectId("5804d07fd974b32430ea9749"), "id" : 2, "ename" : "usr2" }

        .............................

  { "_id" : ObjectId("5804d07fd974b32430ea975b"), "id" : 20, "ename" : "usr20" }

  Type "it" for more  //上面的結(jié)果只輸出了20行,這個(gè)提示表明查看更多應(yīng)輸入it

  repSetTest:PRIMARY> it

  { "_id" : ObjectId("5804d07fd974b32430ea975c"), "id" : 21, "ename" : "usr21" }

   ..............

  { "_id" : ObjectId("5804d07fd974b32430ea9764"), "id" : 29, "ename" : "usr29" }

       三、使用print輸出游標(biāo)結(jié)果集

 repSetTest:PRIMARY> var myCursor = db.user.find()

      while (myCursor.hasNext()) {

      print(tojson(myCursor.next()))

  }

  { "_id" : ObjectId("5804d07fd974b32430ea9748"), "id" : 1, "ename" : "usr1" }

     ..........

  {

      "_id" : ObjectId("5804d07fd974b32430ea9751"),

      "id" : 10,

      "ename" : "usr10"

  }

     ................

  {

      "_id" : ObjectId("5804d07fd974b32430ea9764"),

      "id" : 29,

      "ename" : "usr29"

  }

  //上述查詢中通過var myCursor進(jìn)行變量的定義,相當(dāng)于SQL中的declare cursor cur_name is select ..

  //變量 myCursor定義僅僅是定義,并不會(huì)訪問數(shù)據(jù)庫,而是在myCursor.hasNext()真正訪問數(shù)據(jù)庫

  //myCursor.next()則是輸出下一條記錄,hasNext()訪問數(shù)據(jù)庫時(shí)會(huì)根據(jù)缺省游標(biāo)設(shè)定將結(jié)果讀取到本地

       四、使用printjsont輸出游標(biāo)結(jié)果集

  repSetTest:PRIMARY> var myCursor = db.user.find({id:{$gt:20}})

      while (myCursor.hasNext()) {

      printjson(myCursor.next());}

  {

      "_id" : ObjectId("5804d07fd974b32430ea975c"),

      "id" : 21,

      "ename" : "usr21"

  }

       .......

  {

      "_id" : ObjectId("5804d07fd974b32430ea9764"),

      "id" : 29,

      "ename" : "usr29"

  }

       五、使用 forEach()進(jìn)行迭代

  repSetTest:PRIMARY> var myCursor = db.user.find({id:{$gt:20}})

  repSetTest:PRIMARY> myCursor.forEach(printjson);

  {

      "_id" : ObjectId("5804d07fd974b32430ea975c"),

      "id" : 21,

      "ename" : "usr21"

  }

      ................

  {

      "_id" : ObjectId("5804d07fd974b32430ea9764"),

      "id" : 29,

      "ename" : "usr29"

  }

       六、基于數(shù)組索引迭代

       可以使用toArray()將游標(biāo)迭代文檔返回到一個(gè)數(shù)組,然后通過數(shù)組下標(biāo)方式進(jìn)行訪問。

       該方法將所有由游標(biāo)返回的文檔裝載進(jìn)內(nèi)存。

 //如下示例,將游標(biāo)返回的內(nèi)容傳遞到數(shù)組,然后使用 printjson (documentArray[3])輸出其中的元素

  repSetTest:PRIMARY> var myCursor = db.user.find({id:{$gt:20}})

  repSetTest:PRIMARY> var documentArray = myCursor.toArray();

  repSetTest:PRIMARY> printjson (documentArray[3])

  {

      "_id" : ObjectId("580d775edeb57e4d05eec0f2"),

      "id" : 24,     //Author : Leshami

      "ename" : "usr24" //Blog  : http://blog.csdn.net/leshami

  }

  //也可以將數(shù)組元素輸出到某個(gè)變量,然后在用printjson(myDocument)輸出這個(gè)變量,如下

  repSetTest:PRIMARY> var myDocument = documentArray[3];

  repSetTest:PRIMARY> printjson(myDocument)

  {

      "_id" : ObjectId("580d775edeb57e4d05eec0f2"),

      "id" : 24,

      "ename" : "usr24"

  }

       七、調(diào)整游標(biāo)迭代次數(shù)

 //設(shè)置迭代顯示的次數(shù),如下設(shè)置為5

  repSetTest:PRIMARY> DBQuery.shellBatchSize = 5

  5

  repSetTest:PRIMARY> db.user.find()

  { "_id" : ObjectId("5804d07fd974b32430ea9748"), "id" : 1, "ename" : "usr1" }

  { "_id" : ObjectId("5804d07fd974b32430ea9749"), "id" : 2, "ename" : "usr2" }

  { "_id" : ObjectId("5804d07fd974b32430ea974a"), "id" : 3, "ename" : "usr3" }

  { "_id" : ObjectId("5804d07fd974b32430ea974b"), "id" : 4, "ename" : "usr4" }

  { "_id" : ObjectId("5804d07fd974b32430ea974c"), "id" : 5, "ename" : "usr5" }

  Type "it" for more //從上面的查詢結(jié)果可知,當(dāng)輸出5個(gè)文檔就提示需要輸入it來查看更多

  repSetTest:PRIMARY> it

  { "_id" : ObjectId("5804d07fd974b32430ea974d"), "id" : 6, "ename" : "usr6" }

  { "_id" : ObjectId("5804d07fd974b32430ea974e"), "id" : 7, "ename" : "usr7" }

  { "_id" : ObjectId("5804d07fd974b32430ea974f"), "id" : 8, "ename" : "usr8" }

  { "_id" : ObjectId("5804d07fd974b32430ea9750"), "id" : 9, "ename" : "usr9" }

  { "_id" : ObjectId("5804d07fd974b32430ea9751"), "id" : 10, "ename" : "usr10" }

  Type "it" for more

       八、查看游標(biāo)度量信息

 可以通過db.serverStatus()查看游標(biāo)狀態(tài)相關(guān)的信息,這些信息通常包括

      從服務(wù)器上次啟動(dòng)之后游標(biāo)超時(shí)的數(shù)量

      自定義游標(biāo)超時(shí)的數(shù)量

      游標(biāo)打開后已經(jīng)pinned的數(shù)量

      打開游標(biāo)的總數(shù)目

  //如下查詢本機(jī)游標(biāo)的信息    

  repSetTest:PRIMARY> db.serverStatus().metrics.cursor

  {

      "timedOut" : NumberLong(2),

      "open" : {

          "noTimeout" : NumberLong(0),

          "pinned" : NumberLong(0),

          "total" : NumberLong(2)

      }

  } 

本文最后更新于 2023-3-21 16:03,某些文章具有時(shí)效性,若有錯(cuò)誤或已失效,請(qǐng)?jiān)诰W(wǎng)站留言或聯(lián)系站長(zhǎng):17tui@17tui.com
·END·
站長(zhǎng)網(wǎng)微信號(hào):w17tui,關(guān)注站長(zhǎng)、創(chuàng)業(yè)、關(guān)注互聯(lián)網(wǎng)人 - 互聯(lián)網(wǎng)創(chuàng)業(yè)者營(yíng)銷服務(wù)中心

免責(zé)聲明:本站部分文章和圖片均來自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識(shí),文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系我們及時(shí)修正或刪除。謝謝!

17站長(zhǎng)網(wǎng)微信二維碼

始終以前瞻性的眼光聚焦站長(zhǎng)、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長(zhǎng)轉(zhuǎn)型升級(jí),為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營(yíng)銷服務(wù),與站長(zhǎng)一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨(dú)!

掃一掃,關(guān)注站長(zhǎng)網(wǎng)微信

大家都在看

熱門排行

最近更新

返回頂部
亚洲国产精品人久久,亚洲va国产日韩欧美精品色婷婷,久久久久88色偷偷,免费人成黄页在线观看国际
精品国产1区二区| 欧美激情一区在线| 色婷婷精品久久二区二区蜜臀av | 国产精品中文有码| 久久国产综合精品| 久久国产精品72免费观看| 麻豆一区二区三| 国产一区激情在线| 国产精品12区| 99re这里都是精品| 色就色 综合激情| 欧美日韩在线播| 日韩一卡二卡三卡国产欧美| 欧美α欧美αv大片| 久久久久久久综合| 国产精品久久福利| 亚洲永久免费av| 蜜桃在线一区二区三区| 久久99精品一区二区三区| 国产一区在线视频| 91美女福利视频| 制服丝袜一区二区三区| 久久影院电视剧免费观看| 国产精品女主播av| 五月天激情小说综合| 国产在线精品一区二区夜色 | 亚洲乱码国产乱码精品精可以看| 亚洲成人一区在线| 国产精品一线二线三线精华| 一本久道中文字幕精品亚洲嫩| 制服丝袜激情欧洲亚洲| 国产精品国产自产拍高清av王其| 三级欧美在线一区| 91猫先生在线| 国产精品美女久久久久久| 日本欧美一区二区三区乱码| av激情成人网| 久久人人爽爽爽人久久久| 婷婷综合久久一区二区三区| 97精品视频在线观看自产线路二| 欧美大尺度电影在线| 亚洲成人免费观看| 色婷婷亚洲婷婷| 国产精品卡一卡二卡三| 国产美女在线精品| 欧美成人aa大片| 美国av一区二区| 3atv一区二区三区| 亚洲va欧美va国产va天堂影院| 91丝袜美腿高跟国产极品老师| 久久精子c满五个校花| 精品亚洲成a人在线观看 | 欧美日韩一区在线观看| 中文字幕日韩一区| 97久久超碰国产精品| 亚洲精品乱码久久久久久久久| 成人国产一区二区三区精品| 中文字幕精品在线不卡| 国产成人av资源| 国产精品免费av| 99热99精品| 亚洲精品ww久久久久久p站| 91福利区一区二区三区| 亚洲高清免费在线| 欧美一区二区三区视频免费播放| 日本欧美一区二区三区乱码| 精品国产91洋老外米糕| 高清不卡一二三区| 综合久久久久久久| 欧美麻豆精品久久久久久| 青青草97国产精品免费观看 | 日韩一区二区免费视频| 九九精品视频在线看| 欧美韩国日本综合| 欧美午夜片在线观看| 日本sm残虐另类| 国产精品视频九色porn| 欧美日韩国产精品自在自线| 国产一区二区三区免费| 亚洲精品视频观看| 久久久综合九色合综国产精品| 成人黄色大片在线观看| 日韩电影免费在线看| 国产欧美日韩视频一区二区| 欧美日韩极品在线观看一区| 麻豆精品一区二区综合av| 国产精品国产精品国产专区不片| 在线成人av网站| av在线一区二区| 免费成人小视频| 亚洲人成网站在线| 久久美女艺术照精彩视频福利播放| 成人av网站免费| 久久99精品视频| 亚洲国产精品久久久久婷婷884| 2020国产精品久久精品美国| 欧美视频在线一区二区三区 | 久久综合视频网| 欧美这里有精品| 白白色 亚洲乱淫| 国内精品自线一区二区三区视频| 亚洲国产aⅴ成人精品无吗| 国产精品国产成人国产三级| 精品福利一区二区三区| 91精品久久久久久久99蜜桃| 欧美在线影院一区二区| 波多野结衣在线aⅴ中文字幕不卡| 蜜桃久久久久久| 丝袜a∨在线一区二区三区不卡| 亚洲精品国产视频| 中文字幕一区二区三区在线播放 | 亚洲一区二区在线视频| 国产精品久久久久影院亚瑟| 国产午夜精品在线观看| 精品成人一区二区| 精品av久久707| 26uuu亚洲| 国产欧美日韩卡一| 国产精品你懂的在线| 中文字幕日韩一区二区| 一区二区三区蜜桃网| 亚洲综合一区二区| 亚洲bdsm女犯bdsm网站| 日日噜噜夜夜狠狠视频欧美人| 丝袜美腿高跟呻吟高潮一区| 91在线精品一区二区| 欧美三电影在线| 欧美又粗又大又爽| 欧美影视一区在线| 激情六月婷婷综合| 亚洲另类中文字| 亚洲天堂成人在线观看| 在线一区二区三区做爰视频网站| 天堂va蜜桃一区二区三区| 丝袜诱惑亚洲看片| 成人欧美一区二区三区小说 | 国产亚洲一区二区三区四区 | 日本韩国精品在线| 欧美色老头old∨ideo| 91精品国产色综合久久不卡电影 | 亚洲人成在线观看一区二区| 777精品伊人久久久久大香线蕉| 国产乱码一区二区三区| 久久人人爽人人爽| 亚洲18色成人| 美女视频一区二区| 欧美在线综合视频| 成人av电影观看| 国产人久久人人人人爽| 91.com在线观看| 亚洲无线码一区二区三区| 国产精品综合一区二区| 精品奇米国产一区二区三区| 久久亚洲精精品中文字幕早川悠里| 国产欧美精品区一区二区三区| 日本一区二区三区电影| 欧洲精品在线观看| 日韩中文字幕91| 国产风韵犹存在线视精品| 欧美无人高清视频在线观看| 久久久久久久电影| 国产91富婆露脸刺激对白| 欧美偷拍一区二区| 国产精品亚洲а∨天堂免在线| 欧美区视频在线观看| gogo大胆日本视频一区| 亚洲欧洲日韩av| 91精品国模一区二区三区| youjizz国产精品| 91国产免费观看| 色悠久久久久综合欧美99| 欧美亚洲动漫制服丝袜| 69久久夜色精品国产69蝌蚪网| 99免费精品视频| 91在线看国产| 欧美日韩久久一区二区| 国产精品情趣视频| 91麻豆精品91久久久久同性| 亚洲一区在线观看免费 | 成人免费毛片嘿嘿连载视频| 欧美视频在线不卡| 一区二区三区毛片| 欧美日韩一区不卡| 亚洲欧美国产高清| 日韩午夜精品电影| 欧美日韩一二三| 黄色日韩网站视频| 日韩电影一区二区三区| 国产精品入口麻豆原神| 中文字幕免费观看一区| 欧美精品久久天天躁| 欧美写真视频网站| 在线精品观看国产| 欧美精选在线播放| 国产精品五月天| 亚洲一区二区三区中文字幕| 一区二区三区日韩精品视频| 国产激情视频一区二区三区欧美| 91精品国产高清一区二区三区| 中文字幕人成不卡一区|