Update mongodb

This commit is contained in:
sunkaixuan 2025-06-19 16:36:00 +08:00
parent 8a0c1a3147
commit 84d91cdcf5
4 changed files with 24 additions and 3 deletions

View File

@ -2,6 +2,7 @@
using MongoDB.Driver;
using MongoDB.Driver.Linq;
using MongoDbTest.DBHelper;
using SqlSugar;
using SqlSugar.MongoDb;
using System;
using System.Collections.Generic;
@ -114,6 +115,12 @@ namespace MongoDbTest
}).ToList();
if (list11.First().Age != 12) Cases.ThrowUnitError();
if (list11.First().Age2 != 13) Cases.ThrowUnitError();
var list12= db.Queryable<Student>().Select(it => new
{
Age = -it.Age
}).ToList();
if(list12.First().Age!=-11) Cases.ThrowUnitError();
}
[SqlSugar.SugarTable("UnitStudent1231sds3z1")]
public class Student : MongoDbBase

View File

@ -27,7 +27,15 @@ namespace SqlSugar.MongoDb
public BsonValue Visit(Expression expr)
{
expr = MongoDbExpTools.RemoveConvert(expr);
if (expr.NodeType == ExpressionType.Negate)
{
expr=(expr as UnaryExpression).Operand;
var value=new ExpressionVisitor(context,visitorContext).Visit(expr);
var isMemember = MongoDbExpTools.GetIsMemember(expr);
if (isMemember)
value = $"${value}";
return new BsonDocument("$multiply", new BsonArray { -1, value });
}
switch (expr)
{
case BinaryExpression binary:
@ -51,6 +59,6 @@ namespace SqlSugar.MongoDb
default:
throw new NotSupportedException($"Unsupported expression: {expr.NodeType}");
}
}
}
}
}

View File

@ -73,6 +73,11 @@ namespace SqlSugar.MongoDb
return false;
}
public static bool GetIsMemember(Expression expr)
{
return expr is MemberExpression member && member.Expression is ParameterExpression;
}
internal static Expression RemoveConvert(Expression item)
{
for (int i = 0; i < 10; i++)

View File

@ -7,7 +7,8 @@ using System.Text;
namespace SqlSugar.MongoDb
{
public partial class BinaryExpressionTranslator
{
{
private static bool IsEq(string op)
{
return op == "$eq";