時間:2024-03-26 14:43作者:下載吧人氣:18
前言
MongoDB中的游標與關系型數據庫中的游標在功能上大同小異。游標相當于C語言的指針,可以定位到某條記錄,在MongoDB中,則是文檔。因此在mongoDB中游標也有定義,聲明, 打開,讀取,關閉這么個過程。客戶端通過游標,能夠實現對最終結果進行有效的控制,諸如限制結果數量,跳過部分結果或根據任意鍵按任意順序的組合對結果進行各種排序等。
通俗的說,游標不是查詢結果,可以理解為數據在遍歷過程中的內部指針,其返回的是一個資源,或者說數據讀取接口.
客戶端通過對游標進行一些設置就能對查詢結果進行有效地控制,如可以限制查詢得到的結果數量、跳過部分結果、或對結果集按任意鍵進行排序等!
直接對一個集合調用find()方法時,我們會發現,如果查詢結果超過二十條,只會返回二十條的結果,這是因為Mongodb會自動遞歸find() 返回的游標。
下文是針對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());
}
網友評論