mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-20 02:29:39 +08:00
Update mongodb
This commit is contained in:
@@ -53,7 +53,9 @@ namespace MongoDbTest
|
|||||||
|
|
||||||
var list5 = db.Queryable<Student>().Where(it =>it.CreateDateTime==DateTime.Now.Date).ToList();
|
var list5 = db.Queryable<Student>().Where(it =>it.CreateDateTime==DateTime.Now.Date).ToList();
|
||||||
var list6 = db.Queryable<Student>().Where(it => it.CreateDateTime == DateTime.Now.AddDays(1)).ToList();
|
var list6 = db.Queryable<Student>().Where(it => it.CreateDateTime == DateTime.Now.AddDays(1)).ToList();
|
||||||
var list7 = db.Queryable<Student>().Where(it => it.CreateDateTime.Date == DateTime.Now.AddDays(1)).ToList();
|
|
||||||
|
var dt = DateTime.Now.AddDays(-10).Date;
|
||||||
|
var list7 = db.Queryable<Student>().Where(it => it.CreateDateTime.Date == dt).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ValidateStudentData(SqlSugar.SqlSugarClient db)
|
private static void ValidateStudentData(SqlSugar.SqlSugarClient db)
|
||||||
|
@@ -62,7 +62,7 @@ namespace SqlSugar.MongoDb
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
private static readonly List<string> AllowedDateParts = new List<string>()
|
public static readonly List<string> AllowedDateParts = new List<string>()
|
||||||
{
|
{
|
||||||
"Date", "Year", "Month", "Day", "Hour", "Minute", "Second", "Millisecond"
|
"Date", "Year", "Month", "Day", "Hour", "Minute", "Second", "Millisecond"
|
||||||
};
|
};
|
||||||
|
@@ -23,11 +23,28 @@ namespace SqlSugar.MongoDb
|
|||||||
{
|
{
|
||||||
var oldExp = expr;
|
var oldExp = expr;
|
||||||
var oldMember = expr as MemberExpression;
|
var oldMember = expr as MemberExpression;
|
||||||
if (ExpressionTool.GetParameters(expr).Count == 0)
|
if (ExpressionTool.GetParameters(expr).Count == 0)
|
||||||
{
|
{
|
||||||
var value = ExpressionTool.GetMemberValue(oldMember.Member, oldExp);
|
var value = ExpressionTool.GetMemberValue(oldMember.Member, oldExp);
|
||||||
return BsonValue.Create(value);
|
return BsonValue.Create(value);
|
||||||
}
|
}
|
||||||
|
else if (!string.IsNullOrEmpty(BinaryExpressionTranslator.GetSystemDateMemberName(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")
|
||||||
|
{
|
||||||
|
model.Args.Add(new MethodCallExpressionArgs() { MemberValue = memberExp.Expression });
|
||||||
|
return method.ToDateShort(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return ExtractFieldPath(expr);
|
||||||
|
}
|
||||||
|
|
||||||
|
private BsonValue ExtractFieldPath(Expression expr)
|
||||||
|
{
|
||||||
var parts = new Stack<string>();
|
var parts = new Stack<string>();
|
||||||
|
|
||||||
while (expr is MemberExpression member)
|
while (expr is MemberExpression member)
|
||||||
@@ -40,7 +57,7 @@ namespace SqlSugar.MongoDb
|
|||||||
{
|
{
|
||||||
_visitorContext.ExpType = typeof(MemberExpression);
|
_visitorContext.ExpType = typeof(MemberExpression);
|
||||||
}
|
}
|
||||||
if (parts.Count == 1&& expr is ParameterExpression parameter)
|
if (parts.Count == 1 && expr is ParameterExpression parameter)
|
||||||
{
|
{
|
||||||
if (_context?.context != null)
|
if (_context?.context != null)
|
||||||
{
|
{
|
||||||
|
@@ -4,6 +4,7 @@ using SqlSugar.MongoDb;
|
|||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
namespace SqlSugar.MongoDb
|
namespace SqlSugar.MongoDb
|
||||||
{
|
{
|
||||||
public class MongoDbExpressionContext : ExpressionContext, ILambdaExpressions
|
public class MongoDbExpressionContext : ExpressionContext, ILambdaExpressions
|
||||||
@@ -292,6 +293,17 @@ namespace SqlSugar.MongoDb
|
|||||||
{ left.ToString(), regexDoc }
|
{ left.ToString(), regexDoc }
|
||||||
});
|
});
|
||||||
return match.ToJson(UtilMethods.GetJsonWriterSettings());
|
return match.ToJson(UtilMethods.GetJsonWriterSettings());
|
||||||
|
}
|
||||||
|
public override string ToDateShort(MethodCallExpressionModel model)
|
||||||
|
{
|
||||||
|
var item = model.Args.First().MemberValue;
|
||||||
|
BsonValue itemValue = new ExpressionVisitor(context).Visit(item as Expression);
|
||||||
|
var dateTruncDoc = new BsonDocument("$dateTrunc", new BsonDocument
|
||||||
|
{
|
||||||
|
{ "date", $"${itemValue}" },
|
||||||
|
{ "unit", "day" }
|
||||||
|
});
|
||||||
|
return dateTruncDoc.ToJson(UtilMethods.GetJsonWriterSettings());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user