C# mongodb driver 2.2.3 如何设置游标的batchSize
C# mongodb driver 2.2.3 how to set batchSize for cursor
我正在使用 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
}
我希望在支持 async/await 的 C# 中具有相同的行为。
我知道我可以使用 C# 中的游标,但它的默认批处理大小为 4MB。
这太匹配了return给客户一个电话
您可以在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
}
}
}
但您也可以在游标上调用 ForEachAsync
,批次将按需透明获取:
using (var cursor = await test.FindAsync(filter, options))
{
await cursor.ForEachAsync(doc =>
{
// process doc
});
}
我正在使用 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
}
我希望在支持 async/await 的 C# 中具有相同的行为。 我知道我可以使用 C# 中的游标,但它的默认批处理大小为 4MB。 这太匹配了return给客户一个电话
您可以在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
}
}
}
但您也可以在游标上调用 ForEachAsync
,批次将按需透明获取:
using (var cursor = await test.FindAsync(filter, options))
{
await cursor.ForEachAsync(doc =>
{
// process doc
});
}