一、什么是游標?
游標(Cursor)是處理資料的一種方法,為了查看或者處理結果集中的資料,游標提供了在結果集中一次一行或者多行前進或向后瀏覽資料的能力,
游標實際上是一種能從包括多條資料記錄的結果集中每次提取一條記錄的機制,游標可以被看作是一個查詢結果集(可以是零條、一潭訓由相關的選擇陳述句檢索出的多條記錄)和結果集中指向特定記錄的游標位置組成的一個臨時檔案,提供了在查詢結果集中向前或向后瀏覽資料、處理結果集中資料的能力,有了游標,用戶就可以訪問結果集中任意一行資料,在將游標放置到某行之后,可以在該行或從該位置的行塊上執行操作,
二、MongoDB的游標
在MongoDB中,使用db.collection.find()方法將回傳一個游標,如果要訪問檔案,我們需要使用游標的迭代器,但是,在mongo shell中,如果沒有給回傳的游標指定變數,游標將自動首先回傳前20條記錄,下面我們通過幾個具體的例子,來說明如何使用游標,
- 定義游標
var mycursor = db.emp.find()
- 使用游標訪問檔案
var mycursor = db.emp.find() while(mycursor.hasNext()){ printjson(mycursor.next()) } 也可以像這樣:mycursor.forEach(printjson)
- 游標和陣列
var mycursor = db.emp.find() 定義游標 var myarray = mycursor.toArray() 將游標轉成陣列 var myDocument = myarray[3] 通過陣列元素訪問檔案
- 分頁查詢: skip和limit
每頁顯示5條記錄 var mycursor = db.emp.find().limit(5) 第一頁 var mycursor = db.emp.find().limit(5).skip(5) 第二頁
關閉游標:默認情況下,10分鐘內沒有使用使用的游標會被自動關閉,可以使用.noCursorTimeout()來設定游標的關閉選項,這時就需要手動關閉游標,
var mycursor = db.emp.find().noCursorTimeout()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/3168.html
標籤:NoSQL
上一篇:Redis學習筆記(六) 物件
