Exemplo n.º 1
0
        public IndexContext(int id)
        {
            Id = id;
            var collNode = CacheHelper.GetParentTreeNode(Id);

            Collection = collNode.ModelInfo as CollectionModel;
            sName      = Collection.Database.Server.Name;
            dbName     = Collection.Database.Name;
            collName   = Collection.Name;
        }
Exemplo n.º 2
0
        private void GetIndex(CollectionModel collModel, MongoManager manager)
        {
            //索引类型信息节点
            var indexNode = new TreeNode
            {
                Id   = ConstHelper.GetRandomId(),
                PId  = collModel.Id,
                Name = "索引",
                Type = TreeNodeType.IndexFiller
            };

            TreeNodes.Add(indexNode);

            //索引节点
            var indexes = manager.GetCollectionIndexs(ConstHelper.IndexTableName, collModel.Namespace);

            if (indexes != null)
            {
                foreach (var idx in indexes.ToList())
                {
                    var indexModel = new IndexModel
                    {
                        Id         = ConstHelper.GetRandomId(),
                        Name       = idx["name"].AsString,
                        Namespace  = idx["ns"].AsString,
                        Unique     = idx.Contains("unique") ? idx["unique"].AsBoolean : false,
                        Keys       = new List <IndexKey>(),
                        Collection = collModel
                    };
                    var docFields = idx["key"].AsBsonDocument;
                    foreach (var key in docFields.Names)
                    {
                        var type = int.Parse(docFields[key.ToString()].ToString());
                        indexModel.Keys.Add(new IndexKey
                        {
                            FieldName = key.ToString(),
                            OrderType = type == 1 ? IndexOrderType.Ascending : IndexOrderType.Descending
                        });
                    }

                    TreeNodes.Add(new TreeNode
                    {
                        Id        = indexModel.Id,
                        PId       = indexNode.Id,
                        Name      = indexModel.Name,
                        Type      = TreeNodeType.Index,
                        ModelInfo = indexModel
                    });
                }
            }
        }
Exemplo n.º 3
0
        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));
                }
            }
        }
Exemplo n.º 4
0
        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
                    });
                }
            }
        }