C#mongodb驱动程序2.2.3如何为游标设置batchSize
我正在使用MongoDB 2.2.3的官方C#驱动程序 如何使用C#驱动程序设置光标的批量大小 使用javascript,我可以创建光标并为其设置批大小: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#中使用异步/等
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
});
}