private static IMongoQuery BuildQueryOneLevel(ParamCondition condition)
        {
            if (condition == null)
                return null;

            if (condition.Conditions != null && condition.Conditions.Length > 0)
                return BuildQuery(condition);

            switch (condition.Operator)
            {
                case Operator.Equal:
                    return Query.EQ(condition.Parameter.ParameterID,
                        GetParameterValue(condition.Parameter, condition.Value));
                case Operator.GreaterOrEqual:
                    return Query.GTE(condition.Parameter.ParameterID,
                        GetParameterValue(condition.Parameter, condition.Value));
                case Operator.NotEqual:
                    return Query.NE(condition.Parameter.ParameterID,
                        GetParameterValue(condition.Parameter, condition.Value));
                case Operator.GreaterThan:
                    return Query.GT(condition.Parameter.ParameterID,
                        GetParameterValue(condition.Parameter, condition.Value));
                case Operator.SmallerOrEqual:
                    return Query.LTE(condition.Parameter.ParameterID,
                        GetParameterValue(condition.Parameter, condition.Value));
                case Operator.SmallerThan:
                    return Query.LT(condition.Parameter.ParameterID,
                        GetParameterValue(condition.Parameter, condition.Value));
                case Operator.TimeRange: //
                    break;
            }
            return null;
        }
        public static IMongoQuery BuildQuery(ParamCondition condition)
        {
            if (condition == null)
                return null;

            if (condition.Conditions != null && condition.Conditions.Length > 0)
            {//build condition tree recursive
                if (condition.Relation == ConditionRelation.OR)
                {
                    var subConds = from one in condition.Conditions
                                   select BuildQueryOneLevel(one);
                    IMongoQuery query = Query.Or(subConds);

                    return query;
                }
                else
                {
                    var subConds = from one in condition.Conditions
                                   select BuildQueryOneLevel(one);
                    IMongoQuery query = Query.And(subConds);

                    return query;
                }
            }
            else
            {//只默认AND运算符
                IMongoQuery subQuery = BuildQueryOneLevel(condition);
                return subQuery;
            }
        }