From 00188bb0269c83289c8f10fe0926d862676b4f71 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sun, 4 May 2025 20:17:49 +0800 Subject: [PATCH] Update mongodb --- .../MongoDbTest/OrmTest/OrmTest.cs | 2 +- .../MongoDb/Insertable/MongoDbInserttable.cs | 6 +++++ .../MongoDb/SqlBuilder/MongoDbBuilder.cs | 5 ++-- .../SqlBuilder/MongoDbDeleteBuilder.cs | 26 ++++++++++++++----- 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/Src/Asp.NetCore2/MongoDbTest/OrmTest/OrmTest.cs b/Src/Asp.NetCore2/MongoDbTest/OrmTest/OrmTest.cs index bd9310e46..e396c5d16 100644 --- a/Src/Asp.NetCore2/MongoDbTest/OrmTest/OrmTest.cs +++ b/Src/Asp.NetCore2/MongoDbTest/OrmTest/OrmTest.cs @@ -20,7 +20,7 @@ namespace MongoDbTest new OrderInfo() { CreateTime = DateTime.Now, Name = "a2", Price = 3 }}) .ExecuteReturnPkList(); - db.Deleteable(new OrderInfo() { Id="a" }) + var delrow=db.Deleteable(new OrderInfo() { Id= ids.Last() }) .ExecuteCommand(); } } diff --git a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/Insertable/MongoDbInserttable.cs b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/Insertable/MongoDbInserttable.cs index 97dbd37ee..54779619e 100644 --- a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/Insertable/MongoDbInserttable.cs +++ b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/Insertable/MongoDbInserttable.cs @@ -12,8 +12,14 @@ namespace SqlSugar.MongoDb { public override List ExecuteReturnPkList() { + base.ExecuteCommand(); return ((MongoDbConnection)this.Ado.Connection).ObjectIds.Select(it=>(Type)(object)it).ToList(); } + public new async Task> ExecuteReturnPkListAsync() + { + await base.ExecuteCommandAsync(); + return ((MongoDbConnection)this.Ado.Connection).ObjectIds.Select(it => (Type)(object)it).ToList(); + } public override int ExecuteReturnIdentity() { InsertBuilder.IsReturnIdentity = true; diff --git a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbBuilder.cs b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbBuilder.cs index 4e2cc7d78..f786494a9 100644 --- a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbBuilder.cs @@ -39,8 +39,7 @@ namespace SqlSugar.MongoDb { get { - if (this.Context.CurrentConnectionConfig.MoreSettings == null) return true; - return this.Context.CurrentConnectionConfig.MoreSettings.PgSqlIsAutoToLower; + return false; } } public override string GetTranslationColumnName(string propertyName) @@ -99,7 +98,7 @@ namespace SqlSugar.MongoDb } else { - return SqlTranslationLeft + name.ToLower(isAutoToLower).TrimEnd('"').TrimStart('"') + SqlTranslationRight; + return name; } } public override string GetUnionFomatSql(string sql) diff --git a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbDeleteBuilder.cs b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbDeleteBuilder.cs index 99b22f881..8d7a0bc80 100644 --- a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbDeleteBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbDeleteBuilder.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using MongoDB.Bson; +using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.Json; @@ -9,7 +10,7 @@ namespace SqlSugar.MongoDb { public override string ToSqlString() { - var sb = new StringBuilder("deleteMany b "); + var sb = new StringBuilder($"deleteMany {this.GetTableNameString} "); var jsonObjects = new List(); foreach (var item in this.WhereInfos) { @@ -22,11 +23,24 @@ namespace SqlSugar.MongoDb sql = sql.Replace(startWithValue, "").Replace("'", ""); var dict = new Dictionary(); var array = sql.Split(","); - dict["_id"] = new Dictionary { { "$in", array } }; // Fixed syntax for dictionary initialization - string json = JsonSerializer.Serialize(dict, new JsonSerializerOptions + var idStrings = sql.Split(","); + + // 将字符串数组转为 ObjectId 列表(如果不是 ObjectId 可保留为字符串) + var bsonArray = new BsonArray(); + foreach (var idStr in idStrings) { - WriteIndented = false - }); + bsonArray.Add(ObjectId.Parse(idStr)); // fallback 为普通字符串 + } + + var filter = new BsonDocument + { + { "_id", new BsonDocument { { "$in", bsonArray } } } + }; + + string json = filter.ToJson(new MongoDB.Bson.IO.JsonWriterSettings + { + OutputMode = MongoDB.Bson.IO.JsonOutputMode.Shell + }); // 使用 MongoDB 驱动的序列化 jsonObjects.Add(json); } }