IMongoCollection统计数据

4

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

其中一个用法是获取集合的数据大小,使用以下代码:

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

是否有办法从IMongoCollection中获取CollectionStatsResult对象,就像传统API中的MongoCollection.GetStats()一样? 目前我唯一看到的选项是获得一个Json文档并解析它:

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

你在哪里找到了 .GetStats() 方法?我通过 NuGet 下载了 MongoDB.Driver,但它不存在。 - EgoPingvina
1个回答

6

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

如果您想要一个强类型的结果,可以定义一个包含所需部分的简单类并将其传递。

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

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

谢谢!我会采纳你的建议。 - Alufer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接