mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-20 02:29:39 +08:00
Update mongodb
This commit is contained in:
@@ -66,9 +66,16 @@ namespace MongoDbTest
|
||||
schoolName = sc.Name
|
||||
}).ToList();
|
||||
if (dt5.First().studentName != "张三"&& dt5.First().schoolName!= "清华大学") Cases.ThrowUnitError();
|
||||
var allList = db.Queryable<Student>().Where(s => s.Name == s.Name.ToString()) .ToList();
|
||||
if(allList.Count!=2) Cases.ThrowUnitError();
|
||||
var allList2 = db.Queryable<Student>().Where(s => s.Name.ToString() == s.Name).ToList();
|
||||
if (allList2.Count != 2) Cases.ThrowUnitError();
|
||||
var allList3 = db.Queryable<Student>().Where(s => s.Name.ToString() == s.Name.ToString()).ToList();
|
||||
if (allList3.Count != 2) Cases.ThrowUnitError();
|
||||
//var dt4 = db.Queryable<Student>()
|
||||
//.LeftJoin<School>((s, sc) => s.SchoolId.ToLower() == sc.Id)
|
||||
//.Select((s,sc)=>new {
|
||||
//.LeftJoin<School>((s, sc) => s.SchoolId.ToString() == sc.Id.ToString())
|
||||
//.Select((s, sc) => new
|
||||
//{
|
||||
// studentName = s.Name,
|
||||
// schoolName = sc.Name
|
||||
//}).ToList();
|
||||
|
@@ -13,6 +13,10 @@ namespace SqlSugar.MongoDb
|
||||
var mongoDbType = BinaryExpressionTranslator.GetComparisonType(expressionInfo.NodeType);
|
||||
var left = new ExpressionVisitor(_context).Visit(expressionInfo.LeftExp);
|
||||
var right = new ExpressionVisitor(_context).Visit(expressionInfo.RightExp);
|
||||
if (leftIsMember && !UtilMethods.IsMongoVariable(left))
|
||||
left = UtilMethods.GetMemberName(left);
|
||||
if (rightIsMember && !UtilMethods.IsMongoVariable(right))
|
||||
right = UtilMethods.GetMemberName(right);
|
||||
var filter = new BsonDocument("$expr", new BsonDocument(mongoDbType, new BsonArray
|
||||
{
|
||||
left,
|
||||
@@ -23,18 +27,14 @@ namespace SqlSugar.MongoDb
|
||||
private SqlFuncBinaryExpressionInfo GetSqlFuncBinaryExpressionInfo(bool leftIsMember, bool rightIsMember, BinaryExpression expr)
|
||||
{
|
||||
SqlFuncBinaryExpressionInfo sqlFuncBinaryExpressionInfo = new SqlFuncBinaryExpressionInfo();
|
||||
sqlFuncBinaryExpressionInfo.LeftMethodName= GetSystemDateMemberName(MongoDbExpTools.RemoveConvert(expr.Left));
|
||||
if (!string.IsNullOrEmpty(sqlFuncBinaryExpressionInfo.LeftMethodName))
|
||||
{
|
||||
sqlFuncBinaryExpressionInfo.LeftIsFunc = true;
|
||||
}
|
||||
sqlFuncBinaryExpressionInfo.RightMethodName = GetSystemDateMemberName(MongoDbExpTools.RemoveConvert(expr.Right));
|
||||
if (!string.IsNullOrEmpty(sqlFuncBinaryExpressionInfo.RightMethodName))
|
||||
{
|
||||
sqlFuncBinaryExpressionInfo.RightIsFunc = true;
|
||||
}
|
||||
sqlFuncBinaryExpressionInfo.LeftExp = MongoDbExpTools.RemoveConvert(expr.Left);
|
||||
sqlFuncBinaryExpressionInfo.RightExp = MongoDbExpTools.RemoveConvert(expr.Right);
|
||||
var left = MongoDbExpTools.RemoveConvert(expr.Left);
|
||||
var right = MongoDbExpTools.RemoveConvert(expr.Right);
|
||||
sqlFuncBinaryExpressionInfo.LeftMethodName= GetSystemDateMemberName(left);
|
||||
sqlFuncBinaryExpressionInfo.LeftIsFunc =!leftIsMember&& left is MethodCallExpression &&ExpressionTool.GetParameters(left).Count>0;
|
||||
sqlFuncBinaryExpressionInfo.RightMethodName = GetSystemDateMemberName(right);
|
||||
sqlFuncBinaryExpressionInfo.RightIsFunc = !rightIsMember && right is MethodCallExpression && ExpressionTool.GetParameters(right).Count > 0;
|
||||
sqlFuncBinaryExpressionInfo.LeftExp = MongoDbExpTools.RemoveConvert(left);
|
||||
sqlFuncBinaryExpressionInfo.RightExp = MongoDbExpTools.RemoveConvert(right);
|
||||
sqlFuncBinaryExpressionInfo.NodeType= expr.NodeType;
|
||||
return sqlFuncBinaryExpressionInfo;
|
||||
}
|
||||
|
@@ -635,12 +635,7 @@ namespace SqlSugar.MongoDb
|
||||
#region Helper
|
||||
private static BsonValue GetMemberName(BsonValue memberName)
|
||||
{
|
||||
if (memberName is BsonDocument)
|
||||
return memberName;
|
||||
if (memberName is BsonArray)
|
||||
return memberName;
|
||||
else
|
||||
return $"${memberName}";
|
||||
return UtilMethods.GetMemberName(memberName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using Dm.util;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using MongoDB.Bson;
|
||||
using MongoDB.Bson.Serialization;
|
||||
using System;
|
||||
@@ -582,6 +583,22 @@ namespace SqlSugar.MongoDb
|
||||
{
|
||||
return col.DbColumnName == "_id" || col.DataType == nameof(ObjectId);
|
||||
}
|
||||
|
||||
internal static bool IsMongoVariable(BsonValue memberName)
|
||||
{
|
||||
return memberName is BsonString s && s.Value?.StartsWith("$")==true;
|
||||
}
|
||||
internal static BsonValue GetMemberName(BsonValue memberName)
|
||||
{
|
||||
if (memberName is BsonDocument)
|
||||
return memberName;
|
||||
if (memberName is BsonArray)
|
||||
return memberName;
|
||||
else if (UtilMethods.IsMongoVariable(memberName))
|
||||
return memberName;
|
||||
else
|
||||
return $"${memberName}";
|
||||
}
|
||||
//public static object ConvertDataByTypeName(string ctypename,string value)
|
||||
//{
|
||||
// var item = new ConditionalModel() {
|
||||
|
Reference in New Issue
Block a user