diff --git a/Src/Asp.NetCore2/MongoDbTest/OrmTest/OrmTest.cs b/Src/Asp.NetCore2/MongoDbTest/OrmTest/OrmTest.cs index 683e3bc01..59da0d62d 100644 --- a/Src/Asp.NetCore2/MongoDbTest/OrmTest/OrmTest.cs +++ b/Src/Asp.NetCore2/MongoDbTest/OrmTest/OrmTest.cs @@ -1,4 +1,5 @@ using MongoDbTest.DBHelper; +using SqlSugar; using System; using System.Collections.Generic; using System.Data; @@ -39,6 +40,10 @@ namespace MongoDbTest var list4 = db.Queryable().OrderByDescending(it=>it.Price).ToList(); + var list5 = db.Queryable().OrderByDescending(it => it.Price).ToList(); + + var list6 = db.Queryable().OrderByDescending(it => new { it.Id,Name=it.Name }).ToList(); + //测试生成SQL性能 TestSqlBuilder(db); } diff --git a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbQueryBuilder.cs b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbQueryBuilder.cs index 401a7ac49..6879f314c 100644 --- a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbQueryBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbQueryBuilder.cs @@ -88,20 +88,27 @@ namespace SqlSugar.MongoDb { order = order.Substring("ORDER BY ".Length).Trim(); - int lastSpace = order.LastIndexOf(' '); - string jsonPart = order.Substring(0, lastSpace).Trim(); - string directionPart = order.Substring(lastSpace + 1).Trim().ToUpper(); + var sortDoc = new BsonDocument(); + foreach (var str in order.Split(",")) + { + int lastSpace = str.LastIndexOf(' '); + string jsonPart = str.Substring(0, lastSpace).Trim(); + string directionPart = str.Substring(lastSpace + 1).Trim().ToUpper(); - var bson = MongoDB.Bson.Serialization.BsonSerializer.Deserialize(jsonPart); - if (bson.Contains("fieldName")) + var bson = MongoDB.Bson.Serialization.BsonSerializer.Deserialize(jsonPart); + if (bson.Contains("fieldName")) + { + var field = bson["fieldName"].AsString; + var direction = directionPart == "DESC" ? -1 : 1; + sortDoc[field] = direction; + } + } + if (sortDoc.ElementCount > 0) { - var field = bson["fieldName"].AsString; - var direction = directionPart == "ASC" ? 1 : -1; - operations.Add($"{{ \"$sort\": {{ \"{field}\": {direction} }} }}"); + operations.Add($"{{ \"$sort\": {sortDoc.ToJson()} }}"); } } - #endregion - + #endregion sb.Append($"aggregate {this.GetTableNameString} "); sb.Append("["); sb.Append(string.Join(", ", operations));