From 20c2a690e42408326e0f747e8a80fba482c718bc Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sat, 21 Jun 2025 14:21:07 +0800 Subject: [PATCH] Update mongodb --- .../SqlBuilder/MongoDbExpressionContext.cs | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbExpressionContext.cs b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbExpressionContext.cs index 4f1289171..e04c6cc41 100644 --- a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbExpressionContext.cs +++ b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbExpressionContext.cs @@ -162,7 +162,7 @@ namespace SqlSugar.MongoDb { var item =model.Args[0].MemberValue; BsonValue memberName = new ExpressionVisitor(context).Visit(item as Expression); - var toIntDoc = new BsonDocument("$toInt", $"${memberName}"); + var toIntDoc = new BsonDocument("$toInt", GetMemberName(memberName)); return toIntDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } @@ -170,7 +170,7 @@ namespace SqlSugar.MongoDb { var item = model.Args[0].MemberValue; BsonValue memberName = new ExpressionVisitor(context).Visit(item as Expression); - var toLongDoc = new BsonDocument("$toLong", $"${memberName}"); + var toLongDoc = new BsonDocument("$toLong", GetMemberName(memberName)); return toLongDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } @@ -179,7 +179,7 @@ namespace SqlSugar.MongoDb var item = model.Args[0].MemberValue; BsonValue memberName = new ExpressionVisitor(context).Visit(item as Expression); // MongoDB 没有直接的 Guid 类型,通常以字符串存储 - var toStringDoc = new BsonDocument("$toString", $"${memberName}"); + var toStringDoc = new BsonDocument("$toString", GetMemberName(memberName)); return toStringDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } @@ -187,7 +187,7 @@ namespace SqlSugar.MongoDb { var item = model.Args[0].MemberValue; BsonValue memberName = new ExpressionVisitor(context).Visit(item as Expression); - var toDoubleDoc = new BsonDocument("$toDouble", $"${memberName}"); + var toDoubleDoc = new BsonDocument("$toDouble", GetMemberName(memberName)); return toDoubleDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } @@ -195,7 +195,7 @@ namespace SqlSugar.MongoDb { var item = model.Args[0].MemberValue; BsonValue memberName = new ExpressionVisitor(context).Visit(item as Expression); - var toBoolDoc = new BsonDocument("$toBool", $"${memberName}"); + var toBoolDoc = new BsonDocument("$toBool", GetMemberName(memberName)); return toBoolDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } @@ -203,7 +203,7 @@ namespace SqlSugar.MongoDb { var item = model.Args[0].MemberValue; BsonValue memberName = new ExpressionVisitor(context).Visit(item as Expression); - var toDateDoc = new BsonDocument("$toDate", $"${memberName}"); + var toDateDoc = new BsonDocument("$toDate", GetMemberName(memberName)); return toDateDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } @@ -212,7 +212,7 @@ namespace SqlSugar.MongoDb var item = model.Args[0].MemberValue; BsonValue memberName = new ExpressionVisitor(context).Visit(item as Expression); // MongoDB 没有单独的 Time 类型,通常用字符串或日期处理 - var toStringDoc = new BsonDocument("$toString", $"${memberName}"); + var toStringDoc = new BsonDocument("$toString", GetMemberName(memberName)); return toStringDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } public override string AggregateCount(MethodCallExpressionModel model) @@ -463,7 +463,7 @@ namespace SqlSugar.MongoDb var dateToStringDoc = new BsonDocument("$dateToString", new BsonDocument { { "format", mongoFormat }, - { "date", $"${memberName}" } + { "date", GetMemberName(memberName) } }); return dateToStringDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } @@ -471,13 +471,13 @@ namespace SqlSugar.MongoDb { // 数字格式化,MongoDB不支持C#的数字格式,需要先转字符串再在C#端格式化 // 这里只能简单转字符串 - var toStringDoc = new BsonDocument("$toString", $"${memberName}"); + var toStringDoc = new BsonDocument("$toString", GetMemberName(memberName)); return toStringDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } else { // 其他类型直接转字符串 - var toStringDoc = new BsonDocument("$toString", $"${memberName}"); + var toStringDoc = new BsonDocument("$toString", GetMemberName(memberName)); return toStringDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } } @@ -490,14 +490,14 @@ namespace SqlSugar.MongoDb { var item = model.DataObject as Expression; BsonValue memberName = new ExpressionVisitor(context).Visit(item as Expression); - var toUpperDoc = new BsonDocument("$toUpper", $"${memberName}"); + var toUpperDoc = new BsonDocument("$toUpper", GetMemberName(memberName)); return toUpperDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } public override string ToLower(MethodCallExpressionModel model) { var item = model.DataObject as Expression; BsonValue memberName = new ExpressionVisitor(context).Visit(item as Expression); - var toLowerDoc = new BsonDocument("$toLower", $"${memberName}"); + var toLowerDoc = new BsonDocument("$toLower", GetMemberName(memberName)); return toLowerDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } public override string Abs(MethodCallExpressionModel model) @@ -505,7 +505,7 @@ namespace SqlSugar.MongoDb // 取绝对值,MongoDB $abs 操作符 var item = model.Args[0].MemberValue; BsonValue memberName = new ExpressionVisitor(context).Visit(item as Expression); - var absDoc = new BsonDocument("$abs", $"${memberName}"); + var absDoc = new BsonDocument("$abs", GetMemberName(memberName)); return absDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } @@ -514,7 +514,7 @@ namespace SqlSugar.MongoDb // 四舍五入,MongoDB $round 操作符 var item = model.Args[0].MemberValue; BsonValue memberName = new ExpressionVisitor(context).Visit(item as Expression); - var roundDoc = new BsonDocument("$round", new BsonArray { $"${memberName}" }); + var roundDoc = new BsonDocument("$round", new BsonArray { GetMemberName(memberName) }); return roundDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } @@ -523,7 +523,7 @@ namespace SqlSugar.MongoDb // 向下取整,MongoDB $floor 操作符 var item = model.Args[0].MemberValue; BsonValue memberName = new ExpressionVisitor(context).Visit(item as Expression); - var floorDoc = new BsonDocument("$floor", $"${memberName}"); + var floorDoc = new BsonDocument("$floor", GetMemberName(memberName)); return floorDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } @@ -536,7 +536,7 @@ namespace SqlSugar.MongoDb BsonValue memberName = new ExpressionVisitor(context).Visit(item); BsonValue startValue = new ExpressionVisitor(context).Visit(start as Expression); BsonValue lengthValue = new ExpressionVisitor(context).Visit(length as Expression); - var substrDoc = new BsonDocument("$substrBytes", new BsonArray { $"${memberName}", startValue, lengthValue }); + var substrDoc = new BsonDocument("$substrBytes", new BsonArray { GetMemberName(memberName), startValue, lengthValue }); return substrDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } @@ -551,7 +551,7 @@ namespace SqlSugar.MongoDb BsonValue replacementValue = new ExpressionVisitor(context).Visit(replacement as Expression); var replaceDoc = new BsonDocument("$replaceAll", new BsonDocument { - { "input", $"${memberName}" }, + { "input", GetMemberName(memberName) }, { "find", findValue }, { "replacement", replacementValue } }); @@ -563,7 +563,7 @@ namespace SqlSugar.MongoDb // 字符串长度,MongoDB $strLenBytes 操作符 var item = model.Args[0].MemberValue ?? model.DataObject; BsonValue memberName = new ExpressionVisitor(context).Visit(item as Expression); - var lengthDoc = new BsonDocument("$strLenBytes", $"${memberName}"); + var lengthDoc = new BsonDocument("$strLenBytes", GetMemberName(memberName)); return lengthDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } @@ -592,7 +592,7 @@ namespace SqlSugar.MongoDb // 去除首尾空格,MongoDB $trim 操作符 var item = model.Args[0].MemberValue ?? model.DataObject; BsonValue memberName = new ExpressionVisitor(context).Visit(item as Expression); - var trimDoc = new BsonDocument("$trim", new BsonDocument { { "input", $"${memberName}" } }); + var trimDoc = new BsonDocument("$trim", new BsonDocument { { "input", GetMemberName(memberName) } }); return trimDoc.ToJson(UtilMethods.GetJsonWriterSettings()); } @@ -601,6 +601,8 @@ namespace SqlSugar.MongoDb { if (memberName is BsonDocument) return memberName; + if (memberName is BsonArray) + return memberName; else return $"${memberName}"; }