mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-20 02:29:39 +08:00
Update mongodb
This commit is contained in:
@@ -57,13 +57,13 @@ namespace MongoDbTest
|
|||||||
}
|
}
|
||||||
]");
|
]");
|
||||||
|
|
||||||
//var list = db.Queryable<Student>()
|
var list = db.Queryable<Student>()
|
||||||
// .LeftJoin<School>((x, y) => x.SchoolId == y.Id)
|
.LeftJoin<School>((x, y) => x.SchoolId == y.Id)
|
||||||
// .Select((x, y) => new
|
.Select((x, y) => new
|
||||||
// {
|
{
|
||||||
// StudentName = x.Name,
|
StudentName = x.Name,
|
||||||
// SchoolName = y.Name
|
SchoolName = y.Name
|
||||||
// }).ToList();
|
}).ToList();
|
||||||
}
|
}
|
||||||
[SqlSugar.SugarTable("UnitStudent123131")]
|
[SqlSugar.SugarTable("UnitStudent123131")]
|
||||||
public class Student : MongoDbBase
|
public class Student : MongoDbBase
|
||||||
|
@@ -190,21 +190,51 @@ namespace SqlSugar.MongoDb
|
|||||||
}
|
}
|
||||||
private void ProcessJoinInfoConditions(List<string> operations)
|
private void ProcessJoinInfoConditions(List<string> operations)
|
||||||
{
|
{
|
||||||
|
foreach (var item in this.JoinQueryInfos)
|
||||||
|
{
|
||||||
|
// 解析 JoinWhere JSON,假设格式为 { "SchoolId" : { "$eq" : "_id" } }
|
||||||
|
var joinWhereDoc = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(item.JoinWhere);
|
||||||
|
// 只支持单字段等值连接
|
||||||
|
var localField = joinWhereDoc.GetElement(0).Name;
|
||||||
|
var eqObj = joinWhereDoc[localField].AsBsonDocument;
|
||||||
|
var foreignField = eqObj.GetElement(0).Value.AsString;
|
||||||
|
|
||||||
|
// from: 目标集合名(假设 JoinQueryInfo 有 TableName/ShortName 字段,需根据实际情况调整)
|
||||||
|
// as: 关联后的别名(假设 JoinQueryInfo 有 ShortName 字段)
|
||||||
|
string from = item.TableName ?? item.ShortName ?? "Unknown";
|
||||||
|
string asName = item.ShortName ?? "y";
|
||||||
|
|
||||||
|
// $lookup
|
||||||
|
var lookupDoc = new BsonDocument("$lookup", new BsonDocument
|
||||||
|
{
|
||||||
|
{ "from", from },
|
||||||
|
{ "localField", localField },
|
||||||
|
{ "foreignField", foreignField },
|
||||||
|
{ "as", asName }
|
||||||
|
});
|
||||||
|
operations.Add(lookupDoc.ToJson(UtilMethods.GetJsonWriterSettings()));
|
||||||
|
|
||||||
|
// $unwind
|
||||||
|
var unwindDoc = new BsonDocument("$unwind", new BsonDocument
|
||||||
|
{
|
||||||
|
{ "path", $"${asName}" },
|
||||||
|
{ "preserveNullAndEmptyArrays", true }
|
||||||
|
});
|
||||||
|
operations.Add(unwindDoc.ToJson(UtilMethods.GetJsonWriterSettings()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Get SQL Partial
|
#region Get SQL Partial
|
||||||
|
|
||||||
public override string GetTableNameString
|
public override string GetTableNameString
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (this.TableShortName != null && this.Context.CurrentConnectionConfig?.MoreSettings?.PgSqlIsAutoToLower == false)
|
if (this.AsTables.Any())
|
||||||
{
|
return this.AsTables.FirstOrDefault().Value;
|
||||||
this.TableShortName = Builder.GetTranslationColumnName(this.TableShortName);
|
else
|
||||||
}
|
return this.Context.EntityMaintenance.GetEntityInfo(this.EntityType).DbTableName;
|
||||||
return base.GetTableNameString;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public override bool IsComplexModel(string sql)
|
public override bool IsComplexModel(string sql)
|
||||||
|
Reference in New Issue
Block a user