時間:2024-03-04 00:33作者:下載吧人氣:21
MongoDB 游標詳解
MongoDB中的游標與關系型數據庫中的游標在功能上大同小異。游標相當于C語言的指針,可以定位到某條記錄,在MongoDB中,則是文檔。因此在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()
網友評論