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>()
|
var updateRow3= db.Updateable<OrderInfo>()
|
||||||
.SetColumns(it=>it.Name=="aa")
|
.SetColumns(it=>it.Name=="xx")
|
||||||
.Where(it=>it.Id==ids.Last())
|
.Where(it=> it.Id == ids.Last())
|
||||||
.ExecuteCommand();
|
.ExecuteCommand();
|
||||||
|
|
||||||
var delrow = db.Deleteable(new OrderInfo() { Id = ids.Last() })
|
var delrow = db.Deleteable(new OrderInfo() { Id = ids.Last() })
|
||||||
|
@@ -3,6 +3,7 @@ using MongoDB.Driver;
|
|||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
@@ -84,11 +85,48 @@ namespace SqlSugar.MongoDbCore
|
|||||||
_ => throw new NotSupportedException($"Unsupported binary op: {expr.NodeType}")
|
_ => 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
|
return new BsonDocument
|
||||||
{
|
{
|
||||||
{ field.ToString(), new BsonDocument { { op, value } } }
|
{ 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();
|
var context = new MongoNestedTranslatorContext();
|
||||||
context.resolveType = resolveType;
|
context.resolveType = resolveType;
|
||||||
context.context = this.Context;
|
context.context = this.SugarContext.Context;
|
||||||
var sql=MongoNestedTranslator.Translate(expression, context);
|
var sql=MongoNestedTranslator.Translate(expression, context);
|
||||||
var shellString = sql.ToJson(new JsonWriterSettings
|
var shellString = sql.ToJson(new JsonWriterSettings
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user