IMongoCollection统计数据

时间:2015-10-25 15:20:20

标签: c# mongodb mongodb-.net-driver

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

我的一个用法是使用以下方法获取集合的数据大小:

return Database.GetCollection("collectionName").GetStats().DataSize

有没有办法从遗留API中的CollectionStatsResult IMongoCollection获取MongoCollection.GetStats()个对象? 我现在看到的唯一选择是获取一个Json文档并解析它:

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

1 个答案:

答案 0 :(得分:4)

异步API中没有强类型方式。收集统计数据的结果继续改变形状,删除某些字段,添加其他字段等......将此作为强类型保持不谨慎。通过手动运行它现在正在做的是正确的方法。

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

[BsonIgnoreExtraElements]
class SizeResult
{
  [BsonElement("size")]
  public long Size { get; set; }
}

var result = await database.RunCommandAsync<SizeResult>("{collstats: 'collectionName'}");