/// <summary> /// fill Collection status to ListView /// </summary> /// <param name="lstData"></param> public static void FillCollectionStatusToList(ListView lstData) { lstData.Clear(); if (SystemManager.IsUseDefaultLanguage) { lstData.Columns.Add("CollectionName"); lstData.Columns.Add("ObjectCount"); lstData.Columns.Add("DataSize"); lstData.Columns.Add("LastExtentSize"); lstData.Columns.Add("StorageSize"); lstData.Columns.Add("TotalIndexSize"); //2012-3-6 lstData.Columns.Add("IsCapped"); lstData.Columns.Add("MaxDocuments"); lstData.Columns.Add("AverageObjectSize"); lstData.Columns.Add("PaddingFactor"); } else { lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_CollectionName)); lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_ObjectCount)); lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_DataSize)); lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_LastExtentSize)); lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_StorageSize)); lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_TotalIndexSize)); //2012-3-6 lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_IsCapped)); lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_MaxDocuments)); lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_AverageObjectSize)); lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_PaddingFactor)); } foreach (String mongoSvrKey in _mongoConnSvrLst.Keys) { try { MongoServer mongoSvr = _mongoConnSvrLst[mongoSvrKey]; //感谢 魏琼东 的Bug信息,一些命令必须以Admin执行 if (!SystemManager.GetCurrentServerConfig(mongoSvrKey).Health || !SystemManager.GetCurrentServerConfig(mongoSvrKey).LoginAsAdmin) { continue; } List <String> databaseNameList = mongoSvr.GetDatabaseNames().ToList(); foreach (String strDBName in databaseNameList) { MongoDatabase mongoDB = mongoSvr.GetDatabase(strDBName); List <String> colNameList = mongoDB.GetCollectionNames().ToList(); foreach (String strColName in colNameList) { try { CollectionStatsResult CollectionStatus = mongoDB.GetCollection(strColName).GetStats(); var lst = new ListViewItem(mongoSvrKey + "." + strDBName + "." + strColName); lst.SubItems.Add(CollectionStatus.ObjectCount.ToString()); lst.SubItems.Add(GetSize(CollectionStatus.DataSize)); lst.SubItems.Add(GetSize(CollectionStatus.LastExtentSize)); lst.SubItems.Add(GetSize(CollectionStatus.StorageSize)); lst.SubItems.Add(GetSize(CollectionStatus.TotalIndexSize)); //2012-3-6 lst.SubItems.Add(CollectionStatus.IsCapped.ToString()); //https://jira.mongodb.org/browse/CSHARP-665 try { //注意:这个MaxDocuments只是在CappedCollection时候有效 lst.SubItems.Add(CollectionStatus.MaxDocuments.ToString()); } catch (Exception ex) { //溢出 lst.SubItems.Add(Int32.MaxValue.ToString()); SystemManager.ExceptionLog(ex); } lst.SubItems.Add(CollectionStatus.ObjectCount != 0 ? GetSize((long)CollectionStatus.AverageObjectSize) : "0"); try { //在某些条件下,这个值会抛出异常,IndexKeyNotFound lst.SubItems.Add(CollectionStatus.PaddingFactor.ToString()); } catch (Exception) { lst.SubItems.Add("0"); } lstData.Items.Add(lst); } catch (Exception ex) { //throw; //TODO:排序时候会发生错误,所以暂时不对应 //lstData.Items.Add(new ListViewItem(strColName + "[Exception]")); SystemManager.ExceptionDeal(ex); } } } } catch (Exception ex) { SystemManager.ExceptionDeal(ex); } } lstData.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); }