コード例 #1
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
                    });
                }
            }
        }