mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-19 18:22:23 +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 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)
|
||||
|
@@ -62,7 +62,7 @@ namespace SqlSugar.MongoDb
|
||||
|
||||
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"
|
||||
};
|
||||
|
@@ -23,11 +23,28 @@ namespace SqlSugar.MongoDb
|
||||
{
|
||||
var oldExp = expr;
|
||||
var oldMember = expr as MemberExpression;
|
||||
if (ExpressionTool.GetParameters(expr).Count == 0)
|
||||
{
|
||||
if (ExpressionTool.GetParameters(expr).Count == 0)
|
||||
{
|
||||
var value = ExpressionTool.GetMemberValue(oldMember.Member, oldExp);
|
||||
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>();
|
||||
|
||||
while (expr is MemberExpression member)
|
||||
@@ -40,7 +57,7 @@ namespace SqlSugar.MongoDb
|
||||
{
|
||||
_visitorContext.ExpType = typeof(MemberExpression);
|
||||
}
|
||||
if (parts.Count == 1&& expr is ParameterExpression parameter)
|
||||
if (parts.Count == 1 && expr is ParameterExpression parameter)
|
||||
{
|
||||
if (_context?.context != null)
|
||||
{
|
||||
|
@@ -4,6 +4,7 @@ using SqlSugar.MongoDb;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Text.RegularExpressions;
|
||||
namespace SqlSugar.MongoDb
|
||||
{
|
||||
public class MongoDbExpressionContext : ExpressionContext, ILambdaExpressions
|
||||
@@ -292,6 +293,17 @@ namespace SqlSugar.MongoDb
|
||||
{ left.ToString(), regexDoc }
|
||||
});
|
||||
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