Esempio n. 1
0
        public override TType GetFunction <TType, TModel>(Expression <Func <TModel, bool> > expression, Expression <Func <TModel, TType> > selectField, FunctionType functionType, bool compileSp = false)
        {
            var query     = new MongoDBLambdaQuery <TModel>(dbContext);
            var m         = selectField.Body as MemberExpression;
            var fieldName = m?.Member?.Name;
            //query.Select(selectField.Body);
            //query.Where(expression);
            var    collection = _MongoDB.GetCollection <TModel>(query.QueryTableName);
            object result     = null;


            switch (functionType)
            {
            case FunctionType.COUNT:
                result = collection.Find(expression).CountDocuments();
                break;

            case FunctionType.SUM:
                result = getAggregateResult(collection, expression, "sum", fieldName);
                break;

            case FunctionType.MAX:
                result = getAggregateResult(collection, expression, "max", fieldName);
                break;

            case FunctionType.MIN:
                result = getAggregateResult(collection, expression, "min", fieldName);
                break;

            default:
                throw new NotSupportedException("MongoDB不支持的函数:" + functionType);
            }
            return(ObjectConvert.ConvertObject <TType>(result));
        }
Esempio n. 2
0
        public override int Delete <TModel>(System.Linq.Expressions.Expression <Func <TModel, bool> > expression)
        {
            var query = new MongoDBLambdaQuery <TModel>(dbContext);

            query.Where(expression);
            var collection = _MongoDB.GetCollection <TModel>(query.QueryTableName);
            var result     = collection.DeleteMany(query.__MongoDBFilter);

            return((int)result.DeletedCount);
        }
Esempio n. 3
0
        internal override TType GetFunction <TType, TModel>(Expression <Func <TModel, bool> > expression, Expression <Func <TModel, TType> > selectField, FunctionType functionType, bool compileSp = false)
        {
            var query = new MongoDBLambdaQuery <TModel>(dbContext);

            query.Select(selectField.Body);
            query.Where(expression);
            var    collection = _MongoDB.GetCollection <TModel>(query.QueryTableName);
            object result     = null;

            switch (functionType)
            {
            case FunctionType.COUNT:
                result = collection.Count(query.__MongoDBFilter);
                break;

            default:
                throw new NotSupportedException("MongoDB不支持的函数:" + functionType);
            }
            return(ObjectConvert.ConvertObject <TType>(result));
        }
Esempio n. 4
0
        public override TType GetFunction <TType, TModel>(Expression <Func <TModel, bool> > expression, Expression <Func <TModel, TType> > selectField, FunctionType functionType, bool compileSp = false)
        {
            var query = new MongoDBLambdaQuery <TModel>(dbContext);

            query.Select(selectField.Body);
            query.Where(expression);
            var    collection = _MongoDB.GetCollection <TModel>(query.QueryTableName);
            object result     = null;

            //https://blog.csdn.net/shiyaru1314/article/details/52370478
            //https://www.jb51.net/article/113820.htm
            //https://blog.csdn.net/u013476435/article/details/81560089
            switch (functionType)
            {
            case FunctionType.COUNT:
                result = collection.Count(query.__MongoDBFilter);
                break;

            default:
                throw new NotSupportedException("MongoDB不支持的函数:" + functionType);
            }
            return(ObjectConvert.ConvertObject <TType>(result));
        }