Update mongodb

This commit is contained in:
sunkaixuan 2025-06-21 13:50:04 +08:00
parent fb405063f8
commit ccd96f4500
3 changed files with 40 additions and 11 deletions

View File

@ -170,7 +170,25 @@ namespace MongoDbTest
{ {
name = it.Name.Length, name = it.Name.Length,
}).ToList(); }).ToList();
if(list18.Max(it=>it.name)!=2) Cases.ThrowUnitError(); if(list18.Max(it=>it.name)!=2) Cases.ThrowUnitError();
var list19= db.Queryable<Student>()
.Select(it => new
{
name =string.IsNullOrEmpty(it.Name),
}).ToList();
if (list19.Max(it => it.name) != true) Cases.ThrowUnitError();
//var list20 = db.Queryable<Student>()
// .Select(it => new
// {
// name = string.IsNullOrEmpty(it.Name).ToString(),
// }).ToList();
//if (list20.Max(it => it.name) != "true") Cases.ThrowUnitError();
var list22= db.Queryable<Student>()
.Select(it=>it.Name).ToList();
if (list22.First() != "a") Cases.ThrowUnitError();
} }
[SqlSugar.SugarTable("UnitStudent1231sds3z1")] [SqlSugar.SugarTable("UnitStudent1231sds3z1")]
public class Student : MongoDbBase public class Student : MongoDbBase

View File

@ -1,4 +1,5 @@
using System; using MongoDB.Bson;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Linq.Expressions; using System.Linq.Expressions;
@ -7,7 +8,18 @@ using System.Text;
namespace SqlSugar.MongoDb namespace SqlSugar.MongoDb
{ {
public class MongoDbExpTools 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) public static string CustomToString(object value)
{ {
if (value == null||value==DBNull.Value) if (value == null||value==DBNull.Value)

View File

@ -64,7 +64,7 @@ namespace SqlSugar.MongoDb
trimmed = trimmed.Substring(5).TrimStart(); trimmed = trimmed.Substring(5).TrimStart();
else if (trimmed.StartsWith("AND", StringComparison.OrdinalIgnoreCase)) else if (trimmed.StartsWith("AND", StringComparison.OrdinalIgnoreCase))
trimmed = trimmed.Substring(3).TrimStart(); trimmed = trimmed.Substring(3).TrimStart();
if (IsFieldNameJson(trimmed)) if (MongoDbExpTools.IsFieldNameJson(trimmed))
{ {
var outerDoc = BsonDocument.Parse(trimmed); var outerDoc = BsonDocument.Parse(trimmed);
trimmed = outerDoc["fieldName"].AsString; trimmed = outerDoc["fieldName"].AsString;
@ -135,6 +135,11 @@ namespace SqlSugar.MongoDb
resolveType=ResolveExpressType.SelectSingle, resolveType=ResolveExpressType.SelectSingle,
queryBuilder=this queryBuilder=this
}); });
if (MongoDbExpTools.IsFieldNameJson(dos))
{
dos["fieldName"] = "$"+ dos["fieldName"];
dos.Add(new BsonElement("_id", "0"));
}
var json = dos.ToJson(UtilMethods.GetJsonWriterSettings()); var json = dos.ToJson(UtilMethods.GetJsonWriterSettings());
operations.Add($"{{\"$project\": {json} }}"); operations.Add($"{{\"$project\": {json} }}");
} }
@ -200,13 +205,7 @@ namespace SqlSugar.MongoDb
sb.Append("]"); sb.Append("]");
return sb.ToString(); return sb.ToString();
} }
private bool IsFieldNameJson(string trimmed)
{
return trimmed.StartsWith("{ \"fieldName\" : ");
}
public override string ToCountSql(string sql) public override string ToCountSql(string sql)
{ {
sql=sql.TrimEnd(']'); sql=sql.TrimEnd(']');