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)); }
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); }
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)); }
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)); }