2015-10-25 34 views
3

我正在更新我的代碼以使用MongoDB新的異步API。IMongoCollection統計

我的一個用法是讓使用收集的數據大小:

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"]); 

回答

3

沒有異步API的強類型的方式。收集數據的結果不斷變化,刪除了某些字段,添加了其他字段等等。將此作爲強類型是不明智的。現在通過手動運行它正在做的是正確的方式。

如果你想要一個強類型的結果,你可以定義一個簡單的類,包含你想要的部分並傳遞給它。

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

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

謝謝!我會用你的建議。 – Alufer