IMongoCollection统计数据

本文关键字:统计数据 IMongoCollection | 更新日期: 2023-09-27 18:19:06

我正在更新我的代码使用MongoDB新的异步API。

我的用法之一是使用

获取集合的数据大小:
return Database.GetCollection("collectionName").GetStats().DataSize

是否有任何方法从IMongoCollection获得CollectionStatsResult对象,就像MongoCollection.GetStats()在遗留API中所做的那样?我现在看到的唯一选择是获取一个Json文档并解析它:

var jsonCommand = new JsonCommand<BsonDocument>("{collstats : '"collectionName'"}");
var jsonDocument = await Database.RunCommandAsync(jsonCommand);
return Convert.ToInt64(jsonDocument["size"]);

IMongoCollection统计数据

在异步API中没有强类型的方法。收集统计的结果继续改变形状,删除某些字段,添加其他字段,等等……将其保留为强类型是不明智的。你现在所做的手动运行是正确的方法。

如果你想要一个强类型的结果,你可以定义一个简单的类,包含你想要的部分,并传递它。

[BsonIgnoreExtraElements]
class SizeResult
{
  [BsonElement("size")]
  public long Size { get; set; }
}
var result = await database.RunCommandAsync<SizeResult>("{collstats: 'collectionName'}");