mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-22 20:13:41 +08:00
Update mongodb
This commit is contained in:
@@ -40,8 +40,8 @@ namespace MongoDbTest
|
||||
|
||||
|
||||
var updateRow3= db.Updateable<OrderInfo>()
|
||||
.SetColumns(it=>it.Name=="aa")
|
||||
.Where(it=>it.Id==ids.Last())
|
||||
.SetColumns(it=>it.Name=="xx")
|
||||
.Where(it=> it.Id == ids.Last())
|
||||
.ExecuteCommand();
|
||||
|
||||
var delrow = db.Deleteable(new OrderInfo() { Id = ids.Last() })
|
||||
|
@@ -3,6 +3,7 @@ using MongoDB.Driver;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Text;
|
||||
|
||||
@@ -84,11 +85,48 @@ namespace SqlSugar.MongoDbCore
|
||||
_ => throw new NotSupportedException($"Unsupported binary op: {expr.NodeType}")
|
||||
};
|
||||
|
||||
if (op == null && leftIsMember && !rightIsMember)
|
||||
return new BsonDocument { { field.ToString(), value } };
|
||||
else if (op == null && rightIsMember && !leftIsMember)
|
||||
return new BsonDocument { { value.ToString(), field } };
|
||||
|
||||
|
||||
string leftValue = "";
|
||||
BsonValue rightValue = "";
|
||||
if (IsLeftValue(leftIsMember, rightIsMember, op)|| IsRightValue(leftIsMember, rightIsMember, op))
|
||||
{
|
||||
MemberExpression expression;
|
||||
if (IsLeftValue(leftIsMember, rightIsMember, op))
|
||||
{
|
||||
leftValue = field.ToString();
|
||||
rightValue = value;
|
||||
expression = expr.Left as MemberExpression;
|
||||
}
|
||||
else
|
||||
{
|
||||
leftValue = value.ToString();
|
||||
rightValue = field;
|
||||
expression = expr.Right as MemberExpression;
|
||||
}
|
||||
if (expression != null)
|
||||
{
|
||||
if (expression.Expression is ParameterExpression parameter)
|
||||
{
|
||||
if (_context.context != null)
|
||||
{
|
||||
var entityInfo = _context.context.EntityMaintenance.GetEntityInfo(parameter.Type);
|
||||
var columnInfo = entityInfo.Columns.FirstOrDefault(s => s.PropertyName == leftValue);
|
||||
if (columnInfo != null)
|
||||
{
|
||||
leftValue = columnInfo.DbColumnName;
|
||||
if (columnInfo.IsPrimarykey)
|
||||
{
|
||||
rightValue = BsonValue.Create(ObjectId.Parse(value + ""));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return new BsonDocument { { leftValue, rightValue } };
|
||||
}
|
||||
else
|
||||
{
|
||||
return new BsonDocument
|
||||
{
|
||||
{ field.ToString(), new BsonDocument { { op, value } } }
|
||||
@@ -96,4 +134,15 @@ namespace SqlSugar.MongoDbCore
|
||||
}
|
||||
}
|
||||
|
||||
private static bool IsRightValue(bool leftIsMember, bool rightIsMember, string op)
|
||||
{
|
||||
return op == null && rightIsMember && !leftIsMember;
|
||||
}
|
||||
|
||||
private static bool IsLeftValue(bool leftIsMember, bool rightIsMember, string op)
|
||||
{
|
||||
return op == null && leftIsMember && !rightIsMember;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -12,7 +12,7 @@ namespace SqlSugar.MongoDb
|
||||
{
|
||||
var context = new MongoNestedTranslatorContext();
|
||||
context.resolveType = resolveType;
|
||||
context.context = this.Context;
|
||||
context.context = this.SugarContext.Context;
|
||||
var sql=MongoNestedTranslator.Translate(expression, context);
|
||||
var shellString = sql.ToJson(new JsonWriterSettings
|
||||
{
|
||||
|
Reference in New Issue
Block a user