麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MongoDB > 正文

mongodb游標的用處是什么?怎樣使用?

2024-09-07 00:22:33
字體:
來源:轉載
供稿:網友
       這篇文章給大家分享的是有關MongoDB 游標的內容,關于游標我們在SQL數據庫中也有接觸過,在MongoDB中的游標在功能上與關系型數據庫中的游標也是大同小異,下面就跟隨小編一起來了解一下MongoDB中的游標吧。
 
       游標相當于C語言的指針,可以定位到某條記錄,在MongoDB中,則是文檔。因此在mongoDB中游標也有定義,聲明, 打開,讀取,關閉這么個過程。客戶端通過游標,能夠實現對最終結果進行有效的控制,諸如限制結果數量,跳過部分結果或根據任意鍵按任意順序的組合對結果進行各種排序等。
       一、mongoDB游標介紹
 
  db.collection.find()方法返回一個游標,對于文檔的訪問,我們需要進行游標迭代
  mongoDB的游標與關系型數據庫SQL中的游標類似,可以通過對游標進行(如限制查詢結果數,跳過的結果數等)設置來控制查詢結果
  游標會消耗內存和相關系統資源,游標使用完后應盡快釋放資源
  在mongo shell中,如果返回的游標結果集未指定給某個var定義的變量,則,游標自動迭代20次,即輸出前20個文檔,超出20的情形則需要輸入it來翻頁
  本文內容描述手動方式來實現游標迭代來訪問文檔或者是用索引迭代
 
  聲明游標
      var cursor = db.collectioName.find(query,projection);
 
  打開游標
      Cursor.hasNext() 判斷游標是否已經取到盡頭
 
  讀取數據
      Cursor.Next()  取出游標的下一個文檔
 
  關閉游標
      cursor.close()  此步驟可省略,通常為自動關閉,也可以顯示關閉
 
  用while循環來遍歷游標示例
      var mycursor = db.bar.find({_id:{$lte:5}})
      while(mycursor.hasNext()) {
          printjson(mycursor.next());
          }
 
  游標生命周期
      a、游標完成匹配結果的迭代后,它會清除自身;
      b、客戶端的游標已經不在作用域內,驅動程序回向服務器發送一條特別的消息,讓其銷毀;
      c、缺省情況下,游標在十分鐘內沒有使用,游標自動關閉或者客戶端已經迭代完整個游標;
      d、可以通過cursor.noCursorTimeout()來定義游標超時時間
          如:var myCursor = db.users.find().noCursorTimeout()
      e、對于自定義超時時長的游標可以使用cursor.close() 來關閉游標
          如:db.collection.find(<query>).close()
 
       二、當前環境及數據準備
 
  //查詢集合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  //上面的結果只輸出了20行,這個提示表明查看更多應輸入it
 
  repSetTest:PRIMARY> it
  { "_id" : ObjectId("5804d07fd974b32430ea975c"), "id" : 21, "ename" : "usr21" }
   ..............
  { "_id" : ObjectId("5804d07fd974b32430ea9764"), "id" : 29, "ename" : "usr29" }
 
       三、使用print輸出游標結果集
 
 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"
  }
        四、使用printjsont輸出游標結果集
 
  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()進行迭代
 
  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"
  } 

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美在线观看视频网站 | 青草视频在线观看视频 | 国产成人精品一区二区视频免费 | 久久久久国 | 久久久国产精品视频 | 亚洲免费永久 | 国产一级桃视频播放 | 欧美黄成人免费网站大全 | 国产精品久久久网站 | 欧美一级高潮片免费的 | 91久久线看在观草草青青 | 青草av.久久免费一区 | 97zyz成人免费视频 | 中文字幕综合 | 5a级毛片| 欧美日韩国产综合网 | 亚洲码无人客一区二区三区 | 手机在线看片国产 | 性欧美一区二区 | 最近免费观看高清韩国日本大全 | 黄色片免费视频 | 成年免费看 | 久久亚洲一区二区三区成人国产 | 日韩av影片在线观看 | 性爱视频在线免费 | 精品三区视频 | 欧美亚洲免费 | 久久精品视频12 | 午夜精品久久久久久中宇 | 九九热免费视频在线观看 | 亚洲影视在线观看 | 好吊色欧美一区二区三区四区 | 亚洲免费视 | 国产在线免费 | 亚洲一区二区三区日本久久九 | 亚洲男人的天堂在线视频 | 五月天影院,久久综合, | 国产一国产精品一级毛片 | 中文字幕亚洲一区二区三区 | xxxxhd86日本护士hd | 亚洲精品久久久久www |