2015年1月29日 星期四

[MongoDB]Cursors

Cursors
  Mongodb,讀取資料主要是透過db.collection.find()這個方法,這個方法會回傳collection,
  也會回傳cursor.可利用cursor指定成變數,來存取documents.若沒有宣告變數,則預設回傳20documents.
  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中的設定.對於大多數查詢,第一批會回傳101document或剛超過1Mbdocument.之後每次回傳4Mb,若要改變這個量容大小,可以由 batchSize() and limit()兩個參數。Cursor可以用Cursor.next()來讀取Cursor迴圈中下一筆document.
db.inventory.find().batchSize(10)
cursor.limit()
Cursor Information
 可透過 db.serverStatus()方法取得Cursor的資訊,包括如下:

1. 自上次重新啟動Server開始,timeOutCursor數量
2. Open Cursor中被設定 DBQuery.Option.noTimeout ,還閒止的數量
3. PinnedOpen Cursor的數量
4. Open Cursor的總數量

db.serverStatus().metrics.cursor
The result is the following document:
{
  "timedOut" : <number>
  "open" : {
"noTimeout" : <number>,
"pinned" : <number>,
"total" : <number>
  }
}

沒有留言:

張貼留言