mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-06-28 13:34:32 +08:00
Update mongodb
This commit is contained in:
parent
d3d0315dd5
commit
21ac096d00
@ -164,6 +164,13 @@ namespace MongoDbTest
|
||||
name = it.Name.Substring(0,1),
|
||||
}).ToList();
|
||||
if(list17.First().name2!="a2"||list17.First().name.Substring(0,1)!= list17.First().name) Cases.ThrowUnitError();
|
||||
|
||||
var list18 = db.Queryable<Student>()
|
||||
.Select(it => new
|
||||
{
|
||||
name = it.Name.Length,
|
||||
}).ToList();
|
||||
if(list18.Max(it=>it.name)!=2) Cases.ThrowUnitError();
|
||||
}
|
||||
[SqlSugar.SugarTable("UnitStudent1231sds3z1")]
|
||||
public class Student : MongoDbBase
|
||||
|
@ -38,9 +38,17 @@ namespace SqlSugar.MongoDb
|
||||
var value = ExpressionTool.GetMemberValue(oldMember.Member, oldExp);
|
||||
return UtilMethods.MyCreate(value);
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(BinaryExpressionTranslator.GetSystemDateMemberName(expr)))
|
||||
else if (IsLength(oldMember))
|
||||
{
|
||||
var memberExp= (expr as MemberExpression);
|
||||
var memberExp = (expr as MemberExpression);
|
||||
var method = new MongoDbMethod() { context = _context };
|
||||
var model = new MethodCallExpressionModel() { Args = new List<MethodCallExpressionArgs>() };
|
||||
model.Args.Add(new MethodCallExpressionArgs() { MemberValue = memberExp.Expression });
|
||||
return BsonDocument.Parse(method.Length(model));
|
||||
}
|
||||
else if (IsDateProperty(expr))
|
||||
{
|
||||
var memberExp = (expr as MemberExpression);
|
||||
var method = new MongoDbMethod() { context = _context };
|
||||
var model = new MethodCallExpressionModel() { Args = new List<MethodCallExpressionArgs>() };
|
||||
if (memberExp.Member.Name == "Date")
|
||||
@ -58,6 +66,26 @@ namespace SqlSugar.MongoDb
|
||||
return ExtractFieldPath(expr);
|
||||
}
|
||||
|
||||
private static bool IsDateProperty(Expression expr)
|
||||
{
|
||||
return !string.IsNullOrEmpty(BinaryExpressionTranslator.GetSystemDateMemberName(expr));
|
||||
}
|
||||
|
||||
private static bool IsLength(MemberExpression oldMember)
|
||||
{
|
||||
if (oldMember.Member.Name != "Length")
|
||||
return false;
|
||||
|
||||
var expressionType = oldMember.Expression?.Type;
|
||||
if (expressionType == null)
|
||||
return false;
|
||||
|
||||
return expressionType.IsArray
|
||||
|| expressionType == typeof(string)
|
||||
|| expressionType.FullName == "System.Span`1"
|
||||
|| expressionType.FullName == "System.ReadOnlySpan`1";
|
||||
}
|
||||
|
||||
private BsonValue ExtractFieldPath(Expression expr)
|
||||
{
|
||||
var parts = new Stack<string>();
|
||||
|
Loading…
Reference in New Issue
Block a user