我正在尝试使用 C# 驱动程序为 Mongo DB 执行简单的聚合管道。这是我的代码:
internal async Task<IEnumerable<BsonDocument>> GetDocumentsAsync(string collectionName, int? pageIndex, int? pageSize) {
var collection = _database.GetCollection<BsonDocument>(collectionName);
var aggregationPipeline = new BsonDocument[]
{
new BsonDocument("$skip", pageSize * (pageIndex ?? 0)),
new BsonDocument("$limit", pageSize ?? 10)
};
var result = await collection.Aggregate(aggregationPipeline).ToListAsync();
return result; }
但是聚合函数需要~7s。
我尝试过相同的代码(使用相同的管道),但在 Node.js 中只需要 0.7 秒(少了 10 倍)。
集合中的文档总数为 30K。为什么使用 C# 驱动程序需要这么长时间?有什么办法可以解决这个性能问题吗?
谢谢你
我尝试使用 Nodejs 使用驱动程序从 mongodb 检索数据。
async function main() {
await client.connect();
console.log('Connected successfully to server');
const collection = client.db('MyDatabase').collection('MyCollection');
const results = await collection.aggregate([{$limit : 20}]).toArray();
results.map((result, i ) => console.log(`${++i} ${JSON.stringify(result)}`));
}
main()
.then()
.catch(console.error)
.finally(() => client.close());
这在大约 500 毫秒内为我提供了来自 Azure CosmosDb 服务器的 20 个文档的数据。 但我遇到了完全相同的问题,C# 在尝试通过聚合管道时显示出高延迟。 无法找出它来自哪里,但正在努力。