From 245434f1824ac58407a2f8cc9ae5ffb430777f75 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 8 Jul 2025 16:08:04 +0800 Subject: [PATCH] Update mongodb --- .../MongoDbTest/UnitTest/QueryWhere.cs | 1 + .../LogicalBinaryExpression.cs | 20 ++++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/Src/Asp.NetCore2/MongoDbTest/UnitTest/QueryWhere.cs b/Src/Asp.NetCore2/MongoDbTest/UnitTest/QueryWhere.cs index 1a28829f0..8d7bf3afa 100644 --- a/Src/Asp.NetCore2/MongoDbTest/UnitTest/QueryWhere.cs +++ b/Src/Asp.NetCore2/MongoDbTest/UnitTest/QueryWhere.cs @@ -111,6 +111,7 @@ namespace MongoDbTest if (x3.Count != x2.Count) Cases.ThrowUnitError(); if (x3.First().Id != x2.First().Id) Cases.ThrowUnitError(); if (x3.First().Bool!=true) Cases.ThrowUnitError(); + var x4 = db.Queryable().Where(it => it.Bool&&it.Bool).ToList(); } [SqlSugar.SugarTable("UnitStudent1ssss23s131")] diff --git a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/ExpToSql/VisitorItems/BinaryExpressionTranslator/LogicalBinaryExpression.cs b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/ExpToSql/VisitorItems/BinaryExpressionTranslator/LogicalBinaryExpression.cs index 2339a0219..192d62a5d 100644 --- a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/ExpToSql/VisitorItems/BinaryExpressionTranslator/LogicalBinaryExpression.cs +++ b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/ExpToSql/VisitorItems/BinaryExpressionTranslator/LogicalBinaryExpression.cs @@ -8,14 +8,15 @@ namespace SqlSugar.MongoDb { public partial class BinaryExpressionTranslator: BaseCommonExpression { - private BsonDocument LogicalBinaryExpression(BinaryExpression expr) + private BsonDocument LogicalBinaryExpression(BinaryExpression expr) { string logicOp = expr.NodeType == ExpressionType.AndAlso ? "$and" : "$or"; - - var left = new ExpressionVisitor(_context).Visit(expr.Left); - var right = new ExpressionVisitor(_context).Visit(expr.Right); + var leftExp = AdjustExpression(expr.Left); + var left = new ExpressionVisitor(_context).Visit(leftExp); + var rightExp = AdjustExpression(expr.Right); + var right = new ExpressionVisitor(_context).Visit(rightExp); var isJoinByExp=base.IsJoinByExp(_context); - if (isJoinByExp) + if (isJoinByExp) { if (left is BsonDocument leftDoc && leftDoc.Contains("$expr")) { @@ -33,6 +34,15 @@ namespace SqlSugar.MongoDb return new BsonDocument { { logicOp, arr } }; } + private static Expression AdjustExpression(Expression exp) + { + if (exp is MemberExpression m && m.Type == UtilConstants.BoolType && ExpressionTool.GetParameters(exp).Count > 0) + { + exp = Expression.Equal(exp, Expression.Constant(true, typeof(bool))); + } + return exp; + } + private void AddNestedLogic(BsonArray arr, BsonValue token, string logicOp) { if (token is BsonDocument obj && obj.Contains(logicOp))