Update mongodb

This commit is contained in:
sunkaixuan 2025-06-21 10:25:11 +08:00
parent d3d0315dd5
commit 21ac096d00
2 changed files with 41 additions and 6 deletions

View File

@ -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

View File

@ -38,7 +38,15 @@ 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 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 };
@ -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>();