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;
using MongoDB.Driver.Linq; using MongoDB.Driver.Linq;
using MongoDbTest.DBHelper; using MongoDbTest.DBHelper;
using SqlSugar;
using SqlSugar.MongoDb; using SqlSugar.MongoDb;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -114,6 +115,12 @@ namespace MongoDbTest
}).ToList(); }).ToList();
if (list11.First().Age != 12) Cases.ThrowUnitError(); if (list11.First().Age != 12) Cases.ThrowUnitError();
if (list11.First().Age2 != 13) 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")] [SqlSugar.SugarTable("UnitStudent1231sds3z1")]
public class Student : MongoDbBase public class Student : MongoDbBase

View File

@ -27,7 +27,15 @@ namespace SqlSugar.MongoDb
public BsonValue Visit(Expression expr) public BsonValue Visit(Expression expr)
{ {
expr = MongoDbExpTools.RemoveConvert(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) switch (expr)
{ {
case BinaryExpression binary: case BinaryExpression binary:

View File

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

View File

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