private void GetCollection(int dbId) { var dbNode = TreeNodes.FirstOrDefault(p => p.Id == dbId && p.Type == TreeNodeType.Database); if (dbNode != null) { var dbModel = dbNode.ModelInfo as DatabaseModel; var manager = new MongoManager(dbModel.Server.Name, dbModel.Name); var result = manager.GetCollectionNames(); if (result != null) { var cList = result.Where(t => !t.Contains("$") && !t.Contains(ConstHelper.IndexTableName) && !t.Contains(ConstHelper.ProfileTableName)) .ToList(); var tempCollList = new List <CollectionModel>(); cList.ForEach(cName => { var coll = manager.GetCollection(cName); var collModel = new CollectionModel { Database = dbModel, Id = ConstHelper.GetRandomId(), Name = cName, Namespace = coll.CollectionNamespace.FullName, TotalCount = coll.CountAsync(new BsonDocument()).Result }; tempCollList.Add(collModel); TreeNodes.Add(new TreeNode { Id = collModel.Id, PId = dbModel.Id, Name = string.Format("{0} ({1})", collModel.Name, collModel.TotalCount), Type = TreeNodeType.Collection, ModelInfo = collModel }); }); Parallel.ForEach(tempCollList, c => GetFieldAndIndex(c.Id)); //tempCollList.ForEach(c => GetFieldAndIndex(c.Id)); } } }
private void GetField(CollectionModel collModel, MongoManager manager) { //字段类型信息节点 var fieldNode = new TreeNode { Id = ConstHelper.GetRandomId(), PId = collModel.Id, Name = "表信息", Type = TreeNodeType.TableFiller }; TreeNodes.Add(fieldNode); //字段节点 var doc = manager.GetCollection(collModel.Name).Find(new BsonDocument()) .Skip(1).FirstOrDefaultAsync().Result; if (doc != null) { foreach (var item in doc.Names) { var fieldModel = new FieldModel { Id = ConstHelper.GetRandomId(), Name = item.ToString(), Type = doc[item].BsonType, Collection = collModel }; TreeNodes.Add(new TreeNode { Id = fieldModel.Id, PId = fieldNode.Id, Name = fieldModel.Name + string.Format(" ({0})", fieldModel.Type), Type = TreeNodeType.Field, ModelInfo = fieldModel }); } } }