IMongoCollection 统计数据
IMongoCollection stats
我正在更新我的代码以使用 MongoDB 新异步 API。
我的一个用法是使用 :
获取集合的数据大小
return Database.GetCollection("collectionName").GetStats().DataSize
有没有办法像 MongoCollection.GetStats()
在遗留 API 中那样从 IMongoCollection
获取 CollectionStatsResult
对象?
我现在看到的唯一选择是获取 Json 文档并解析它:
var jsonCommand = new JsonCommand<BsonDocument>("{collstats : \"collectionName\"}");
var jsonDocument = await Database.RunCommandAsync(jsonCommand);
return Convert.ToInt64(jsonDocument["size"]);
异步中没有强类型方式API。收集统计数据的结果不断改变形状,删除某些字段,添加其他字段等等……将其保留为强类型是不明智的。您现在通过 运行 手动执行的操作是正确的方法。
如果您想要一个强类型的结果,您可以定义一个简单的 class 包含您想要的部分并传递它。
[BsonIgnoreExtraElements]
class SizeResult
{
[BsonElement("size")]
public long Size { get; set; }
}
var result = await database.RunCommandAsync<SizeResult>("{collstats: 'collectionName'}");
我正在更新我的代码以使用 MongoDB 新异步 API。
我的一个用法是使用 :
获取集合的数据大小return Database.GetCollection("collectionName").GetStats().DataSize
有没有办法像 MongoCollection.GetStats()
在遗留 API 中那样从 IMongoCollection
获取 CollectionStatsResult
对象?
我现在看到的唯一选择是获取 Json 文档并解析它:
var jsonCommand = new JsonCommand<BsonDocument>("{collstats : \"collectionName\"}");
var jsonDocument = await Database.RunCommandAsync(jsonCommand);
return Convert.ToInt64(jsonDocument["size"]);
异步中没有强类型方式API。收集统计数据的结果不断改变形状,删除某些字段,添加其他字段等等……将其保留为强类型是不明智的。您现在通过 运行 手动执行的操作是正确的方法。
如果您想要一个强类型的结果,您可以定义一个简单的 class 包含您想要的部分并传递它。
[BsonIgnoreExtraElements]
class SizeResult
{
[BsonElement("size")]
public long Size { get; set; }
}
var result = await database.RunCommandAsync<SizeResult>("{collstats: 'collectionName'}");