Esempio n. 1
0
 /// <summary>
 /// </summary>
 /// <param name="mIsShow"></param>
 public void InitByCurrentCollection(bool mIsShow)
 {
     var columnList =
         MongoHelper.GetCollectionSchame(RuntimeMongoDbContext.GetCurrentCollection());
     var fieldList = new List<DataFilter.QueryFieldItem>();
     foreach (var item in columnList)
     {
         //输出配置的初始化
         var queryFieldItem = new DataFilter.QueryFieldItem();
         queryFieldItem.ColName = item;
         queryFieldItem.IsShow = mIsShow;
         queryFieldItem.SortType = DataFilter.SortType.NoSort;
         if (queryFieldItem.ColName == ConstMgr.KeyId)
         {
             queryFieldItem.IsShow = true;
         }
         fieldList.Add(queryFieldItem);
     }
     _mQueryFieldList = fieldList;
     SetFieldList();
 }
Esempio n. 2
0
        //http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart(旧网址)
        //http://docs.mongodb.org/manual/reference/sql-comparison/

        /// <summary>
        ///     Convert Query SqlHelper To DataFilter
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="mongoCol"></param>
        /// <returns></returns>
        public static DataFilter ConvertQuerySql(string sql, MongoCollection mongoCol)
        {
            var rtnQuery = new DataFilter();

            sql = sql.Trim();
            //引号中的空格用&nbsp;代替,引号以外的东西小写
            sql = Regular(sql);
            //先将字符串里面的空格统一成单个空格
            //Select    A,B  From   C ->
            //Select A,B From C
            while (sql.Contains("  "))
            {
                sql = sql.Replace("  ", " ");
            }
            //找出Select ,From , Group
            var sqlToken = sql.Split(" ".ToCharArray());

            var selectStartIndex  = -1;
            var fromStartIndex    = -1;
            var whereStartIndex   = -1;
            var groupByStartIndex = -1;
            var orderByStartIndex = -1;

            for (var i = 0; i < sqlToken.Length; i++)
            {
                switch (sqlToken[i].ToLower())
                {
                case "select":
                    selectStartIndex = i;
                    break;

                case "from":
                    fromStartIndex = i;
                    break;

                case "where":
                    whereStartIndex = i;
                    break;

                case "group":
                    groupByStartIndex = i;
                    break;

                case "order":
                    orderByStartIndex = i;
                    break;
                }
            }

            string[] keyWords = { "select", "from", "where", "group", "order" };

            //From - > CollectionName
            GetKeyContent(fromStartIndex, sqlToken, keyWords);

            //Select 设定 必须项
            //Select - > FieldList
            var strSelect = GetKeyContent(selectStartIndex, sqlToken, keyWords);

            if (strSelect == string.Empty)
            {
                return(null);
            }
            var columnNameLst = MongoHelper.GetCollectionSchame(mongoCol);

            if (strSelect == "*")
            {
                //Select *
                foreach (var item in columnNameLst)
                {
                    var field = new DataFilter.QueryFieldItem
                    {
                        ColName  = item,
                        IsShow   = true,
                        SortType = DataFilter.SortType.NoSort
                    };
                    rtnQuery.QueryFieldList.Add(field);
                }
            }
            else
            {
                //Select A,B,C
                foreach (var item in strSelect.Split(",".ToCharArray()))
                {
                    var field = new DataFilter.QueryFieldItem
                    {
                        ColName  = item,
                        IsShow   = true,
                        SortType = DataFilter.SortType.NoSort
                    };
                    rtnQuery.QueryFieldList.Add(field);
                }
            }

            //Where 设定,可选项
            var strWhere = GetKeyContent(whereStartIndex, sqlToken, keyWords);

            if (strWhere != string.Empty)
            {
                rtnQuery.QueryConditionList = SetQueryCondition(strWhere, columnNameLst);
            }

            //Order 设定,可选项
            var strOrder = GetKeyContent(orderByStartIndex, sqlToken, keyWords);

            if (strOrder != string.Empty)
            {
                SetQueryOrder(rtnQuery, strOrder);
            }


            //Group 设定,可选项
            var strGroup = GetKeyContent(groupByStartIndex, sqlToken, keyWords);

            if (strGroup != string.Empty)
            {
                //TODO:Group
            }

            return(rtnQuery);
        }
Esempio n. 3
0
        //http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart(旧网址)
        //http://docs.mongodb.org/manual/reference/sql-comparison/

        /// <summary>
        ///     Convert Query SqlHelper To DataFilter
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="mongoCol"></param>
        /// <returns></returns>
        public static DataFilter ConvertQuerySql(string sql, MongoCollection mongoCol)
        {
            var rtnQuery = new DataFilter();
            sql = sql.Trim();
            //引号中的空格用&nbsp;代替,引号以外的东西小写
            sql = Regular(sql);
            //先将字符串里面的空格统一成单个空格
            //Select    A,B  From   C ->
            //Select A,B From C
            while (sql.Contains("  "))
            {
                sql = sql.Replace("  ", " ");
            }
            //找出Select ,From , Group 
            var sqlToken = sql.Split(" ".ToCharArray());

            var selectStartIndex = -1;
            var fromStartIndex = -1;
            var whereStartIndex = -1;
            var groupByStartIndex = -1;
            var orderByStartIndex = -1;

            for (var i = 0; i < sqlToken.Length; i++)
            {
                switch (sqlToken[i].ToLower())
                {
                    case "select":
                        selectStartIndex = i;
                        break;
                    case "from":
                        fromStartIndex = i;
                        break;
                    case "where":
                        whereStartIndex = i;
                        break;
                    case "group":
                        groupByStartIndex = i;
                        break;
                    case "order":
                        orderByStartIndex = i;
                        break;
                }
            }

            string[] keyWords = {"select", "from", "where", "group", "order"};

            //From - > CollectionName
            GetKeyContent(fromStartIndex, sqlToken, keyWords);

            //Select 设定 必须项
            //Select - > FieldList
            var strSelect = GetKeyContent(selectStartIndex, sqlToken, keyWords);
            if (strSelect == string.Empty)
            {
                return null;
            }
            var columnNameLst = MongoHelper.GetCollectionSchame(mongoCol);
            if (strSelect == "*")
            {
                //Select * 
                foreach (var item in columnNameLst)
                {
                    var field = new DataFilter.QueryFieldItem
                    {
                        ColName = item,
                        IsShow = true,
                        SortType = DataFilter.SortType.NoSort
                    };
                    rtnQuery.QueryFieldList.Add(field);
                }
            }
            else
            {
                //Select A,B,C 
                foreach (var item in strSelect.Split(",".ToCharArray()))
                {
                    var field = new DataFilter.QueryFieldItem
                    {
                        ColName = item,
                        IsShow = true,
                        SortType = DataFilter.SortType.NoSort
                    };
                    rtnQuery.QueryFieldList.Add(field);
                }
            }

            //Where 设定,可选项
            var strWhere = GetKeyContent(whereStartIndex, sqlToken, keyWords);
            if (strWhere != string.Empty)
            {
                rtnQuery.QueryConditionList = SetQueryCondition(strWhere, columnNameLst);
            }

            //Order 设定,可选项
            var strOrder = GetKeyContent(orderByStartIndex, sqlToken, keyWords);
            if (strOrder != string.Empty)
            {
                SetQueryOrder(rtnQuery, strOrder);
            }


            //Group 设定,可选项
            var strGroup = GetKeyContent(groupByStartIndex, sqlToken, keyWords);
            if (strGroup != string.Empty)
            {
                //TODO:Group
            }

            return rtnQuery;
        }