diff --git a/Src/Asp.NetCore2/MongoDbTest/UnitTest/Delete.cs b/Src/Asp.NetCore2/MongoDbTest/UnitTest/Delete.cs index 1943917fe..9e0e9c330 100644 --- a/Src/Asp.NetCore2/MongoDbTest/UnitTest/Delete.cs +++ b/Src/Asp.NetCore2/MongoDbTest/UnitTest/Delete.cs @@ -33,8 +33,11 @@ namespace MongoDbTest new Student() { Age = 2, Name = "aa", SchoolId = "222", CreateDateTime = DateTime.Now.AddDays(-1) }, new Student() { Age = 3, Name = "33", SchoolId = "333", CreateDateTime = DateTime.Now.AddDays(1) } }).ExecuteCommandAsync().GetAwaiter().GetResult(); - var id2 =db.Queryable().First(it => it.Name.ToLower() == "a")?.Id??null; - db.Deleteable().In(id).ExecuteCommandAsync().GetAwaiter().GetResult(); + var id2 =db.Queryable().First(it => it.Name.ToLower() == "aa")?.Id??null; + var count5=db.Queryable().Count(); + db.Deleteable().In(id2).ExecuteCommandAsync().GetAwaiter().GetResult(); + var count6 = db.Queryable().Count(); + if (count6 != (count5 - 1)) Cases.ThrowUnitError(); } [SqlSugar.SugarTable("UnitStudent1ssdds3z1")] public class Student : MongoDbBase diff --git a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/ExpToSql/VisitorItems/BinaryExpressionTranslator/ComparisonOperationExpression.cs b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/ExpToSql/VisitorItems/BinaryExpressionTranslator/ComparisonOperationExpression.cs index d905172da..70882c037 100644 --- a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/ExpToSql/VisitorItems/BinaryExpressionTranslator/ComparisonOperationExpression.cs +++ b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/ExpToSql/VisitorItems/BinaryExpressionTranslator/ComparisonOperationExpression.cs @@ -22,7 +22,14 @@ namespace SqlSugar.MongoDb } private static BsonDocument ComparisonNotKeyValue(BsonValue field, BsonValue value, string op) - { + { // 如果 field 是一个表达式对象(如 BsonDocument),则使用 $expr + if (field is BsonDocument bd) + { + return new BsonDocument + { + { "$expr", new BsonDocument(op, new BsonArray { field, value }) } + }; + } var leftKey = field.ToString(); return new BsonDocument {