C#mongodb驱动程序2.2.3如何为游标设置batchSize

C#mongodb驱动程序2.2.3如何为游标设置batchSize,c#,mongodb,mongodb.driver,C#,Mongodb,Mongodb.driver,我正在使用MongoDB 2.2.3的官方C#驱动程序 如何使用C#驱动程序设置光标的批量大小 使用javascript,我可以创建光标并为其设置批大小: var cursor = db.statistics.find(query).batchSize(100) 我可以使用以下语句遍历所有项: while(cursor.objsLeftInBatch()>0){ var doc = cursor.next(); //process doc } 我希望在C#中使用异步/等

我正在使用MongoDB 2.2.3的官方C#驱动程序

如何使用C#驱动程序设置光标的批量大小

使用javascript,我可以创建光标并为其设置批大小:

var cursor = db.statistics.find(query).batchSize(100)
我可以使用以下语句遍历所有项:

while(cursor.objsLeftInBatch()>0){
    var doc = cursor.next();
    //process doc
}
我希望在C#中使用异步/等待支持时也有同样的行为。 我知道我可以使用C#中的游标,但它的默认批量大小是4MB。
这太匹配,无法通过一次调用返回到客户端。

您可以在
FindAsync
FindOptions
参数中设置批大小

下面是显式处理批处理的基本模式:

var filter = new BsonDocument();
var options = new FindOptions<BsonDocument>
{
    // Get 100 docs at a time
    BatchSize = 100
};

using (var cursor = await test.FindAsync(filter, options))
{
    // Move to the next batch of docs
    while (await cursor.MoveNextAsync())
    {
        var batch = cursor.Current;
        foreach (var doc in batch)
        {
            // process doc
        }
    }
}

MongoDB遗留API确实提供了控制批量大小的方法,但我不确定现代API。见,非常感谢JonyHK,我已经用个人资料检查过了,一切正常。
using (var cursor = await test.FindAsync(filter, options))
{
    await cursor.ForEachAsync(doc =>
    {
        // process doc
    });
}