Update mongodb

This commit is contained in:
sunkaixuan 2025-05-05 21:38:33 +08:00
parent b405431cab
commit 9858f32706
4 changed files with 29 additions and 9 deletions

View File

@ -23,7 +23,7 @@ namespace MongoDbTest
var updateRow = db.Updateable(new List<OrderInfo>() var updateRow = db.Updateable(new List<OrderInfo>()
{ {
new OrderInfo() { Id = ids.First(),Name="a3"}, new OrderInfo() { Id = ids.First(),Name="a3",Price=11},
new OrderInfo() { Id = ids.Last(),Name="a4"} new OrderInfo() { Id = ids.Last(),Name="a4"}
}) })
.ExecuteCommand(); .ExecuteCommand();
@ -31,11 +31,10 @@ namespace MongoDbTest
var delrow = db.Deleteable(new OrderInfo() { Id = ids.Last() }) var delrow = db.Deleteable(new OrderInfo() { Id = ids.Last() })
.ExecuteCommand(); .ExecuteCommand();
var list2 = db.Queryable<OrderInfo>().ToList();
var list = db.Queryable<OrderInfo>().ToDataTable(); var list = db.Queryable<OrderInfo>().ToDataTable();
var list2 = db.Queryable<OrderInfo>().Where(it=>it.Name=="a3"&&it.Price==11).ToList();
//测试生成SQL性能 //测试生成SQL性能
TestSqlBuilder(db); TestSqlBuilder(db);
} }

View File

@ -6,5 +6,7 @@ namespace SqlSugar.MongoDbCore
{ {
public class MongoNestedTranslatorContext public class MongoNestedTranslatorContext
{ {
public ResolveExpressType resolveType { get; internal set; }
public SqlSugarProvider context { get; internal set; }
} }
} }

View File

@ -1,4 +1,5 @@
using System; using SqlSugar.MongoDbCore;
using System;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
namespace SqlSugar.MongoDb namespace SqlSugar.MongoDb
@ -7,7 +8,11 @@ namespace SqlSugar.MongoDb
{ {
public new void Resolve(Expression expression, ResolveExpressType resolveType) public new void Resolve(Expression expression, ResolveExpressType resolveType)
{ {
var context = new MongoNestedTranslatorContext();
context.resolveType = resolveType;
context.context = this.Context;
var sql=MongoNestedTranslator.Translate(expression, context);
this.Result.Append(sql);
} }
public SqlSugarProvider Context { get; set; } public SqlSugarProvider Context { get; set; }

View File

@ -1,4 +1,5 @@
using System.Collections.Generic; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Text.Json.Nodes; using System.Text.Json.Nodes;
@ -50,6 +51,19 @@ namespace SqlSugar.MongoDb
{ {
List<string> operations = new List<string>(); List<string> operations = new List<string>();
var sb = new StringBuilder(); var sb = new StringBuilder();
foreach (var item in this.WhereInfos)
{
// 去除开头的 WHERE 或 AND忽略大小写和空格
string trimmed = item.TrimStart();
if (trimmed.StartsWith("WHERE", StringComparison.OrdinalIgnoreCase))
trimmed = trimmed.Substring(5).TrimStart();
else if (trimmed.StartsWith("AND", StringComparison.OrdinalIgnoreCase))
trimmed = trimmed.Substring(3).TrimStart();
// item 是 JSON 格式字符串,直接包进 $match
operations.Add($"{{ \"$match\": {trimmed} }}");
}
sb.Append($"aggregate {this.GetTableNameString} "); sb.Append($"aggregate {this.GetTableNameString} ");
sb.Append("["); sb.Append("[");
sb.Append(string.Join(", ", operations)); sb.Append(string.Join(", ", operations));