2011-11-22 48 views

回答

9

限制是你想要的結果總數。如果您的查詢將返回一千個文檔,但您只需要5個文檔,則可以使用限制來限制總結果的大小。

BatchSize是應在每批中返回的結果數量。如果查詢的結果集很大,MongoDB不會返回一批中的所有結果。它將返回總結果的一個子集,然後光標將在需要下一批結果時向服務器發送getMore消息。

+0

好,所以設置BATCHSIZE使通過的結果光標到內部頁面,以滿足文檔返回的總數限制? –

+3

不會。假設您有一個查詢返回1000個小文檔。第一次調用cursor.next()時,光標將從服務器獲取第一批文檔。默認情況下這將是101個文件。如果您將BatchSize設置爲5,那麼第一批將只有5個文檔,則每當光標用完文檔時,它將從服務器獲取5個以上的文檔,直到整個結果集已被返回。 –

+0

這可能是我混亂的根源。 MongoDB .Net驅動程序沒有Next()方法。 –

5

我得到這個從MongoDB的文檔:

[BATCHSIZE]限制在一個批次中返回的元素的數量。遊標通常會獲取一批結果對象並將其存儲在本地。如果batchSize是正數,它表示檢索到的每批對象的大小。可以對其進行調整以優化性能並限制數據傳輸。如果batchSize爲負數,它將限制返回的數量對象,這些數量適合最大批量限制(通常爲4MB),並且遊標將被關閉。例如,如果batchSize爲-10,那麼服務器將返回最多10個文檔,並且可以容納4MB,然後關閉光標。 請注意,此功能不同於limit(),因爲文檔必須符合最大大小,並且無需發送關閉遊標服務器端的請求。即使在光標迭代後批量大小也可以更改,在這種情況下,該設置將應用於下一批檢索。

下面是術語表,其中這來自一個鏈接:http://api.mongodb.org/java/2.6/com/mongodb/DBCursor.html#batchSize(int

+0

我確實看到了,但它並沒有真正闡明配料的含義,因爲我需要提前批量生產嗎?它是在內部完成的嗎?關於關閉遊標服務器端的這是什麼? –

+0

Negative batchSize不適用於mongocsharpdriver v1.8.1。 「System.ArgumentException:BatchSize不能是負數」。 – user854301