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