Update mongodb

This commit is contained in:
sunkaixuan
2025-07-02 10:13:11 +08:00
parent 2e72ca9e2e
commit e60f23d1ef
4 changed files with 68 additions and 2 deletions

View File

@@ -1,4 +1,5 @@
using System;
using MongoDb.Ado.Data.Common;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
@@ -6,7 +7,41 @@ using System.Threading.Tasks;
namespace MongoDb.Ado.data
{
public class MongoDbMethodUtils
{
{
public static MongoParsedCommand ParseMongoCommand(string command)
{
if (string.IsNullOrWhiteSpace(command))
throw new ArgumentException("command is null or empty");
// 去掉前后空格与结尾分号
command = command.Trim().TrimEnd(';');
// 确保以 db. 开头
if (!command.StartsWith("db."))
throw new FormatException("Invalid command format. Must start with db.");
int dotIndex = command.IndexOf('.', 3); // 找 collection 之后的点
int parenIndex = command.IndexOf('(', dotIndex);
int braceIndex = command.IndexOf('{', parenIndex);
if (dotIndex == -1 || parenIndex == -1 || braceIndex == -1)
throw new FormatException("Command format not recognized.");
string collectionName = command.Substring(3, dotIndex - 3).Trim();
string operation = command.Substring(dotIndex + 1, parenIndex - dotIndex - 1).Trim();
string jsonPart = command.Substring(parenIndex + 1).Trim();
if (jsonPart.EndsWith(")"))
jsonPart = jsonPart.Substring(0, jsonPart.Length - 1);
return new MongoParsedCommand
{
CollectionName = collectionName,
Operation = operation,
Json = jsonPart
};
}
public static void ValidateOperation(string operation)
{
if (ExecuteHandlerFactory.Items.TryGetValue(operation, out var handler))

View File

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace MongoDb.Ado.Data.Common
{
public class MongoParsedCommand
{
public string CollectionName { get; set; }
public string Operation { get; set; }
public string Json { get; set; }
}
}