Cursors
在Mongodb中,讀取資料主要是透過db.collection.find()這個方法,這個方法會回傳collection外,
也會回傳cursor.可利用cursor指定成變數,來存取documents.若沒有宣告變數,則預設回傳20筆documents.
EX: 我們在mongodb shell,操作db.mydb.find(),預設回傳20筆資料.
Cursors行為
1. 會在用完Cursor時或閒滯10分鐘時,自動關閉Cursor.
2. 可以在查詢中,加上noTimeOut,可必免閒滯10分鐘自動關必Cursor.
var myCursor = db.inventory.find().addOption(DBQuery.Option.noTimeout);
Cursor Batches
在monogoDb中查詢結果是批次回傳,回傳的大小不可以過 maximum BSON document size中的設定.對於大多數查詢,第一批會回傳101筆document或剛超過1Mb的document.之後每次回傳4Mb,若要改變這個量容大小,可以由 batchSize() and limit()兩個參數。Cursor可以用Cursor.next()來讀取Cursor迴圈中下一筆document.
db.inventory.find().batchSize(10)
cursor.limit()
Cursor Information
1. 自上次重新啟動Server開始,timeOut的Cursor數量
3. Pinned中Open Cursor的數量
4. Open Cursor的總數量
db.serverStatus().metrics.cursor
The result is the following document:
{
"timedOut" : <number>
"open" : {
"noTimeout" : <number>,
"pinned" : <number>,
"total" : <number>
}
}