mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-23 22:11:36 +08:00
Update mongodb
This commit is contained in:
parent
9552fd74a4
commit
9b394ced24
@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace MongoDb.Ado.data
|
||||||
|
{
|
||||||
|
public class MongoDbMethodUtils
|
||||||
|
{
|
||||||
|
public void ValidateOperation(string operation)
|
||||||
|
{
|
||||||
|
if (ExecuteHandlerFactory.Items.TryGetValue(operation, out var handler))
|
||||||
|
{
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
if (DbDataReaderFactory.Items.TryGetValue(operation, out var handlerQuery))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
throw new InvalidOperationException($"Operation '{operation}' is not supported.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -12,24 +12,21 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public class DbDataReaderFactory
|
public class DbDataReaderFactory
|
||||||
{
|
{
|
||||||
|
public readonly static Dictionary<string, IQueryHandler> Items = new Dictionary<string, IQueryHandler>(StringComparer.OrdinalIgnoreCase)
|
||||||
|
{
|
||||||
|
{ "find", new QueryFindHandler() },
|
||||||
|
{ "aggregate", new QueryFindHandler() },
|
||||||
|
};
|
||||||
public DbDataReader Handle(string operation, IMongoCollection<BsonDocument> collection, string json)
|
public DbDataReader Handle(string operation, IMongoCollection<BsonDocument> collection, string json)
|
||||||
{
|
{
|
||||||
var doc = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonValue>(json);
|
var doc = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonValue>(json);
|
||||||
IQueryHandler queryHandler = null;
|
DbDataReaderFactory.Items.TryGetValue(operation, out var handler);
|
||||||
if (operation == "find")
|
if (handler==null)
|
||||||
{
|
{
|
||||||
queryHandler = new QueryFindHandler();
|
ExecuteHandlerFactory.Handler(operation, json, collection);
|
||||||
}
|
|
||||||
else if (operation == "aggregate")
|
|
||||||
{
|
|
||||||
queryHandler = new QueryAggregateHandler();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ExecuteHandlerFactory.Handler(operation,json, collection);
|
|
||||||
return new DataTable().CreateDataReader();
|
return new DataTable().CreateDataReader();
|
||||||
}
|
}
|
||||||
return queryHandler.Handler(collection, doc);
|
return handler.Handler(collection, doc);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -13,24 +13,21 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public class DbDataReaderFactoryAsync
|
public class DbDataReaderFactoryAsync
|
||||||
{
|
{
|
||||||
public async Task<DbDataReader> HandleAsync(string operation, IMongoCollection<BsonDocument> collection, string json)
|
public readonly static Dictionary<string, IQueryHandlerAsync> Items = new Dictionary<string, IQueryHandlerAsync>(StringComparer.OrdinalIgnoreCase)
|
||||||
|
{
|
||||||
|
{ "find", new QueryFindHandlerAsync() },
|
||||||
|
{ "aggregate", new QueryFindHandlerAsync() },
|
||||||
|
};
|
||||||
|
public async Task<DbDataReader> Handle(string operation, IMongoCollection<BsonDocument> collection, string json)
|
||||||
{
|
{
|
||||||
var doc = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonValue>(json);
|
var doc = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonValue>(json);
|
||||||
IQueryHandlerAsync queryHandler = null;
|
DbDataReaderFactoryAsync.Items.TryGetValue(operation, out var handler);
|
||||||
if (operation == "find")
|
if (handler == null)
|
||||||
{
|
{
|
||||||
queryHandler = new QueryFindHandlerAsync();
|
await ExecuteHandlerFactoryAsync.HandlerAsync(operation, json, collection);
|
||||||
}
|
|
||||||
else if (operation == "aggregate")
|
|
||||||
{
|
|
||||||
queryHandler = new QueryAggregateHandlerAsync();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
await ExecuteHandlerFactoryAsync.HandlerAsync(operation,json, collection);
|
|
||||||
return new DataTable().CreateDataReader();
|
return new DataTable().CreateDataReader();
|
||||||
}
|
}
|
||||||
return await queryHandler.HandlerAsync(collection, doc);
|
return await handler.HandlerAsync(collection, doc);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public class DeleteHandler : IMongoOperationHandler
|
public class DeleteHandler : IMongoOperationHandler
|
||||||
{
|
{
|
||||||
|
public string operation { get; set; }
|
||||||
public int Handle(IMongoCollection<BsonDocument> collection, string json)
|
public int Handle(IMongoCollection<BsonDocument> collection, string json)
|
||||||
{
|
{
|
||||||
var doc = BsonDocument.Parse(json);
|
var doc = BsonDocument.Parse(json);
|
||||||
|
@ -9,6 +9,7 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public class DeleteManyHandler : IMongoOperationHandler
|
public class DeleteManyHandler : IMongoOperationHandler
|
||||||
{
|
{
|
||||||
|
public string operation { get; set; }
|
||||||
public int Handle(IMongoCollection<BsonDocument> collection, string json)
|
public int Handle(IMongoCollection<BsonDocument> collection, string json)
|
||||||
{
|
{
|
||||||
var documents = ParseJsonArray(json);
|
var documents = ParseJsonArray(json);
|
||||||
|
@ -27,7 +27,7 @@ namespace MongoDb.Ado.data
|
|||||||
|
|
||||||
if (!handlers.TryGetValue(operation, out var handler))
|
if (!handlers.TryGetValue(operation, out var handler))
|
||||||
throw new NotSupportedException($"不支持的操作类型: {operation}");
|
throw new NotSupportedException($"不支持的操作类型: {operation}");
|
||||||
|
handler.operation = operation;
|
||||||
return handler.Handle(collection, json);
|
return handler.Handle(collection, json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public interface IMongoOperationHandler
|
public interface IMongoOperationHandler
|
||||||
{
|
{
|
||||||
|
string operation { get; set; }
|
||||||
int Handle(IMongoCollection<BsonDocument> collection, string json);
|
int Handle(IMongoCollection<BsonDocument> collection, string json);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public class InsertHandler : IMongoOperationHandler
|
public class InsertHandler : IMongoOperationHandler
|
||||||
{
|
{
|
||||||
|
public string operation { get; set; }
|
||||||
public int Handle(IMongoCollection<BsonDocument> collection, string json)
|
public int Handle(IMongoCollection<BsonDocument> collection, string json)
|
||||||
{
|
{
|
||||||
var doc = BsonDocument.Parse(json);
|
var doc = BsonDocument.Parse(json);
|
||||||
|
@ -9,6 +9,7 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public class InsertManyHandler : IMongoOperationHandler
|
public class InsertManyHandler : IMongoOperationHandler
|
||||||
{
|
{
|
||||||
|
public string operation { get; set; }
|
||||||
public int Handle(IMongoCollection<BsonDocument> collection, string json)
|
public int Handle(IMongoCollection<BsonDocument> collection, string json)
|
||||||
{
|
{
|
||||||
var documents = ParseJsonArray(json);
|
var documents = ParseJsonArray(json);
|
||||||
|
@ -8,10 +8,16 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public class NonFindHandler : IMongoOperationHandler
|
public class NonFindHandler : IMongoOperationHandler
|
||||||
{
|
{
|
||||||
|
public string operation { get; set; }
|
||||||
public int Handle(IMongoCollection<BsonDocument> collection, string json)
|
public int Handle(IMongoCollection<BsonDocument> collection, string json)
|
||||||
{
|
{
|
||||||
var filter = string.IsNullOrWhiteSpace(json) ? FilterDefinition<BsonDocument>.Empty : BsonDocument.Parse(json);
|
using (var dr = new DbDataReaderFactory().Handle(operation, collection, json))
|
||||||
var result = collection.Find(filter).FirstOrDefault();
|
{
|
||||||
|
if (dr.Read())
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
return 0; // 查询不改变数据库
|
return 0; // 查询不改变数据库
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public class UpdateHandler : IMongoOperationHandler
|
public class UpdateHandler : IMongoOperationHandler
|
||||||
{
|
{
|
||||||
|
public string operation { get; set; }
|
||||||
public int Handle(IMongoCollection<BsonDocument> collection, string json)
|
public int Handle(IMongoCollection<BsonDocument> collection, string json)
|
||||||
{
|
{
|
||||||
var doc = BsonDocument.Parse(json);
|
var doc = BsonDocument.Parse(json);
|
||||||
|
@ -9,6 +9,7 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public class UpdateManyHandler : IMongoOperationHandler
|
public class UpdateManyHandler : IMongoOperationHandler
|
||||||
{
|
{
|
||||||
|
public string operation { get; set; }
|
||||||
public int Handle(IMongoCollection<BsonDocument> collection, string json)
|
public int Handle(IMongoCollection<BsonDocument> collection, string json)
|
||||||
{
|
{
|
||||||
var documents = ParseJsonArray(json);
|
var documents = ParseJsonArray(json);
|
||||||
|
@ -9,6 +9,7 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public class DeleteHandlerAsync : IMongoOperationHandlerAsync
|
public class DeleteHandlerAsync : IMongoOperationHandlerAsync
|
||||||
{
|
{
|
||||||
|
public string operation { get; set; }
|
||||||
public async Task<int> HandleAsync(IMongoCollection<BsonDocument> collection, string json)
|
public async Task<int> HandleAsync(IMongoCollection<BsonDocument> collection, string json)
|
||||||
{
|
{
|
||||||
var doc = BsonDocument.Parse(json);
|
var doc = BsonDocument.Parse(json);
|
||||||
|
@ -10,6 +10,7 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public class DeleteManyHandlerAsync : IMongoOperationHandlerAsync
|
public class DeleteManyHandlerAsync : IMongoOperationHandlerAsync
|
||||||
{
|
{
|
||||||
|
public string operation { get; set; }
|
||||||
public async Task<int> HandleAsync(IMongoCollection<BsonDocument> collection, string json)
|
public async Task<int> HandleAsync(IMongoCollection<BsonDocument> collection, string json)
|
||||||
{
|
{
|
||||||
var documents = ParseJsonArray(json);
|
var documents = ParseJsonArray(json);
|
||||||
|
@ -28,7 +28,7 @@ namespace MongoDb.Ado.data
|
|||||||
|
|
||||||
if (!handlers.TryGetValue(operation, out var handler))
|
if (!handlers.TryGetValue(operation, out var handler))
|
||||||
throw new NotSupportedException($"不支持的操作类型: {operation}");
|
throw new NotSupportedException($"不支持的操作类型: {operation}");
|
||||||
|
handler.operation = operation;
|
||||||
return handler.HandleAsync(collection, json);
|
return handler.HandleAsync(collection, json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,8 @@ using System.Threading.Tasks;
|
|||||||
namespace MongoDb.Ado.data
|
namespace MongoDb.Ado.data
|
||||||
{
|
{
|
||||||
public interface IMongoOperationHandlerAsync
|
public interface IMongoOperationHandlerAsync
|
||||||
{
|
{
|
||||||
|
string operation { get; set; }
|
||||||
Task<int> HandleAsync(IMongoCollection<BsonDocument> collection, string json);
|
Task<int> HandleAsync(IMongoCollection<BsonDocument> collection, string json);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public class InsertHandlerAsync : IMongoOperationHandlerAsync
|
public class InsertHandlerAsync : IMongoOperationHandlerAsync
|
||||||
{
|
{
|
||||||
|
public string operation { get; set; }
|
||||||
public async Task<int> HandleAsync(IMongoCollection<BsonDocument> collection, string json)
|
public async Task<int> HandleAsync(IMongoCollection<BsonDocument> collection, string json)
|
||||||
{
|
{
|
||||||
var doc = BsonDocument.Parse(json);
|
var doc = BsonDocument.Parse(json);
|
||||||
|
@ -10,6 +10,7 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public class InsertManyHandlerAsync : IMongoOperationHandlerAsync
|
public class InsertManyHandlerAsync : IMongoOperationHandlerAsync
|
||||||
{
|
{
|
||||||
|
public string operation { get; set; }
|
||||||
public async Task<int> HandleAsync(IMongoCollection<BsonDocument> collection, string json)
|
public async Task<int> HandleAsync(IMongoCollection<BsonDocument> collection, string json)
|
||||||
{
|
{
|
||||||
var documents = ParseJsonArray(json);
|
var documents = ParseJsonArray(json);
|
||||||
|
@ -9,9 +9,11 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public class NonFindHandlerAsync : IMongoOperationHandlerAsync
|
public class NonFindHandlerAsync : IMongoOperationHandlerAsync
|
||||||
{
|
{
|
||||||
|
public string operation { get; set; }
|
||||||
|
|
||||||
public async Task<int> HandleAsync(IMongoCollection<BsonDocument> collection, string json)
|
public async Task<int> HandleAsync(IMongoCollection<BsonDocument> collection, string json)
|
||||||
{
|
{
|
||||||
using (var dr = await new DbDataReaderFactoryAsync().HandleAsync("", collection, json))
|
using (var dr = await new DbDataReaderFactoryAsync().HandleAsync(operation, collection, json))
|
||||||
{
|
{
|
||||||
if (dr.Read())
|
if (dr.Read())
|
||||||
{
|
{
|
||||||
|
@ -9,6 +9,7 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public class UpdateHandlerAsync : IMongoOperationHandlerAsync
|
public class UpdateHandlerAsync : IMongoOperationHandlerAsync
|
||||||
{
|
{
|
||||||
|
public string operation { get; set; }
|
||||||
public async Task<int> HandleAsync(IMongoCollection<BsonDocument> collection, string json)
|
public async Task<int> HandleAsync(IMongoCollection<BsonDocument> collection, string json)
|
||||||
{
|
{
|
||||||
var doc = BsonDocument.Parse(json);
|
var doc = BsonDocument.Parse(json);
|
||||||
|
@ -10,6 +10,7 @@ namespace MongoDb.Ado.data
|
|||||||
{
|
{
|
||||||
public class UpdateManyHandlerAsync : IMongoOperationHandlerAsync
|
public class UpdateManyHandlerAsync : IMongoOperationHandlerAsync
|
||||||
{
|
{
|
||||||
|
public string operation { get; set; }
|
||||||
public async Task<int> HandleAsync(IMongoCollection<BsonDocument> collection, string json)
|
public async Task<int> HandleAsync(IMongoCollection<BsonDocument> collection, string json)
|
||||||
{
|
{
|
||||||
var documents = ParseJsonArray(json);
|
var documents = ParseJsonArray(json);
|
||||||
|
Loading…
Reference in New Issue
Block a user