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

时间:2016-04-03 22:09:33

标签: 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#中使用async / await支持具有相同的行为。 我知道我可以使用C#中的游标,但它的默认批量大小是4MB。 这太匹配了,无法通过一次通话返回客户端。

1 个答案:

答案 0 :(得分:13)

您可以在FindOptions的{​​{1}}参数中设置批量大小。

这里是明确处理批次的基本模式:

FindAsync

但您也可以在光标上调用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 } } } ,批量将根据需要透明地获取:

ForEachAsync