diff --git a/Src/Asp.NetCore2/MongoDbTest/UnitTest/QuerySelect.cs b/Src/Asp.NetCore2/MongoDbTest/UnitTest/QuerySelect.cs index bd13a045f..82d4b54d4 100644 --- a/Src/Asp.NetCore2/MongoDbTest/UnitTest/QuerySelect.cs +++ b/Src/Asp.NetCore2/MongoDbTest/UnitTest/QuerySelect.cs @@ -170,7 +170,25 @@ namespace MongoDbTest { name = it.Name.Length, }).ToList(); - if(list18.Max(it=>it.name)!=2) Cases.ThrowUnitError(); + if(list18.Max(it=>it.name)!=2) Cases.ThrowUnitError(); + + var list19= db.Queryable() + .Select(it => new + { + name =string.IsNullOrEmpty(it.Name), + }).ToList(); + if (list19.Max(it => it.name) != true) Cases.ThrowUnitError(); + + //var list20 = db.Queryable() + // .Select(it => new + // { + // name = string.IsNullOrEmpty(it.Name).ToString(), + // }).ToList(); + //if (list20.Max(it => it.name) != "true") Cases.ThrowUnitError(); + + var list22= db.Queryable() + .Select(it=>it.Name).ToList(); + if (list22.First() != "a") Cases.ThrowUnitError(); } [SqlSugar.SugarTable("UnitStudent1231sds3z1")] public class Student : MongoDbBase diff --git a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/ExpToSql/MongoDbExpTools.cs b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/ExpToSql/MongoDbExpTools.cs index 3f2be2ee9..977c503f3 100644 --- a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/ExpToSql/MongoDbExpTools.cs +++ b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/ExpToSql/MongoDbExpTools.cs @@ -1,4 +1,5 @@ -using System; +using MongoDB.Bson; +using System; using System.Collections.Generic; using System.Globalization; using System.Linq.Expressions; @@ -7,7 +8,18 @@ using System.Text; namespace SqlSugar.MongoDb { public class MongoDbExpTools - { + { + + public static bool IsFieldNameJson(string trimmed) + { + return trimmed.StartsWith("{ \"fieldName\" : "); + } + public static bool IsFieldNameJson(BsonDocument doc) + { + if (doc.Contains("fieldName")) + return true; + return false; + } public static string CustomToString(object value) { if (value == null||value==DBNull.Value) diff --git a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbQueryBuilder.cs b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbQueryBuilder.cs index 924731d01..12baaf7a0 100644 --- a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbQueryBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/SqlBuilder/MongoDbQueryBuilder.cs @@ -64,7 +64,7 @@ namespace SqlSugar.MongoDb trimmed = trimmed.Substring(5).TrimStart(); else if (trimmed.StartsWith("AND", StringComparison.OrdinalIgnoreCase)) trimmed = trimmed.Substring(3).TrimStart(); - if (IsFieldNameJson(trimmed)) + if (MongoDbExpTools.IsFieldNameJson(trimmed)) { var outerDoc = BsonDocument.Parse(trimmed); trimmed = outerDoc["fieldName"].AsString; @@ -135,6 +135,11 @@ namespace SqlSugar.MongoDb resolveType=ResolveExpressType.SelectSingle, queryBuilder=this }); + if (MongoDbExpTools.IsFieldNameJson(dos)) + { + dos["fieldName"] = "$"+ dos["fieldName"]; + dos.Add(new BsonElement("_id", "0")); + } var json = dos.ToJson(UtilMethods.GetJsonWriterSettings()); operations.Add($"{{\"$project\": {json} }}"); } @@ -200,13 +205,7 @@ namespace SqlSugar.MongoDb sb.Append("]"); return sb.ToString(); - } - - private bool IsFieldNameJson(string trimmed) - { - return trimmed.StartsWith("{ \"fieldName\" : "); - } - + } public override string ToCountSql(string sql) { sql=sql.TrimEnd(']');