時間:2024-03-26 14:43作者:下載吧人氣:24
前言
MongoDB中的游標(biāo)與關(guān)系型數(shù)據(jù)庫中的游標(biāo)在功能上大同小異。游標(biāo)相當(dāng)于C語言的指針,可以定位到某條記錄,在MongoDB中,則是文檔。因此在mongoDB中游標(biāo)也有定義,聲明, 打開,讀取,關(guān)閉這么個過程。客戶端通過游標(biāo),能夠?qū)崿F(xiàn)對最終結(jié)果進(jìn)行有效的控制,諸如限制結(jié)果數(shù)量,跳過部分結(jié)果或根據(jù)任意鍵按任意順序的組合對結(jié)果進(jìn)行各種排序等。
通俗的說,游標(biāo)不是查詢結(jié)果,可以理解為數(shù)據(jù)在遍歷過程中的內(nèi)部指針,其返回的是一個資源,或者說數(shù)據(jù)讀取接口.
客戶端通過對游標(biāo)進(jìn)行一些設(shè)置就能對查詢結(jié)果進(jìn)行有效地控制,如可以限制查詢得到的結(jié)果數(shù)量、跳過部分結(jié)果、或?qū)Y(jié)果集按任意鍵進(jìn)行排序等!
直接對一個集合調(diào)用find()方法時,我們會發(fā)現(xiàn),如果查詢結(jié)果超過二十條,只會返回二十條的結(jié)果,這是因為Mongodb會自動遞歸find() 返回的游標(biāo)。
下文是針對MongoDB游標(biāo)的具體介紹。
一、mongoDB游標(biāo)介紹
db.collection.find()
方法返回一個游標(biāo),對于文檔的訪問,我們需要進(jìn)行游標(biāo)迭代
mongoDB的游標(biāo)與關(guān)系型數(shù)據(jù)庫SQL中的游標(biāo)類似,可以通過對游標(biāo)進(jìn)行(如限制查詢結(jié)果數(shù),跳過的結(jié)果數(shù)等)設(shè)置來控制查詢結(jié)果
游標(biāo)會消耗內(nèi)存和相關(guān)系統(tǒng)資源,游標(biāo)使用完后應(yīng)盡快釋放資源
在mongo shell中,如果返回的游標(biāo)結(jié)果集未指定給某個var定義的變量,則,游標(biāo)自動迭代20次,即輸出前20個文檔,超出20的情形則需要輸入it來翻頁
本文內(nèi)容描述手動方式來實現(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)的下一個文檔
關(guān)閉游標(biāo)
cursor.close()
此步驟可省略,通常為自動關(guān)閉,也可以顯示關(guān)閉
用while循環(huán)來遍歷游標(biāo)示例
var mycursor = db.bar.find({_id:{$lte:5}})
while(mycursor.hasNext()) {
printjson(mycursor.next());
}
網(wǎng)友評論