using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
namespace DSFinanceSystem
{
public class DSMongoDBConn
{
public static string Conn { get; set; } = "mongodb://127.0.0.1:27017";
public static string DataBaseName { get; set; } = "DSFinance";
public static string CollectionName { get; set; } = "Finance";
}
public class DSMongoDB
{
public static void InitMonogoDB()
{
Client = new MongoClient(DSMongoDBConn.Conn);
DataBase = Client.GetDatabase(DSMongoDBConn.DataBaseName);
}
public static IMongoDatabase DataBase { get; set; }
public static IMongoClient Client { get; set; }
public static IMongoCollection<T> GetCollection<T>()
{
IMongoCollection<T> collection = DataBase.GetCollection<T>(DSMongoDBConn.CollectionName);
Filter = new BsonDocument();
return collection;
}
public static BsonDocument Filter { get; set; } = new BsonDocument();
public static async Task InsertOneAsync<T>(T t)
{
try
{
var collection = GetCollection<T>();
await collection.InsertOneAsync(t);
}
catch (Exception e)
{
throw;
}
}
public static void InsertOne<T>(T t)
{
try
{
var collection = GetCollection<T>();
collection.InsertOne(t);
}
catch (Exception e)
{
throw;
}
}
public static void DeleteOne<T>(string key, object value)
{
try
{
var collection = GetCollection<T>();
collection.DeleteOne(Builders<T>.Filter.Eq(key, value));
}
catch (Exception e)
{
throw;
}
}
public static async Task DeleteOneAsync<T>(string key, object value)
{
try
{
var collection = GetCollection<T>();
await collection.DeleteOneAsync(Builders<T>.Filter.Eq(key, value));
}
catch (Exception e)
{
throw;
}
}
public static void DeleteMany<T>(string key, object value)
{
try
{
var collection = GetCollection<T>();
collection.DeleteMany(Builders<T>.Filter.Eq(key, value));
}
catch (Exception e)
{
throw;
}
}
public static async Task DeleteManyAsync<T>(string key, object value)
{
try
{
var collection = GetCollection<T>();
await collection.DeleteManyAsync(Builders<T>.Filter.Eq(key, value));
}
catch (Exception e)
{
throw;
}
}
public static void UpdateOne<T>(string key, object oldValue, object newValue)
{
try
{
var collection = GetCollection<T>();
var filter = Builders<T>.Filter.Eq(key, oldValue);
var update = Builders<T>.Update.Set(key, newValue);
collection.UpdateOne(filter, update);
}
catch (Exception e)
{
throw;
}
}
public static void UpdateMany<T>(string key, object oldValue, object newValue)
{
try
{
var collection = GetCollection<T>();
var filter = Builders<T>.Filter.Eq(key, oldValue);
var update = Builders<T>.Update.Set(key, newValue);
collection.UpdateMany(filter, update);
}
catch (Exception e)
{
throw;
}
}
public static async Task UpdateOneAsync<T>(string key, object oldValue, object newValue)
{
try
{
var collection = GetCollection<T>();
var filter = Builders<T>.Filter.Eq(key, oldValue);
var update = Builders<T>.Update.Set(key, newValue);
await collection.UpdateOneAsync(filter, update);
}
catch (Exception e)
{
throw;
}
}
public static async Task UpdateManyAsync<T>(string key, object oldValue, object newValue)
{
try
{
var collection = GetCollection<T>();
var filter = Builders<T>.Filter.Eq(key, oldValue);
var update = Builders<T>.Update.Set(key, newValue);
await collection.UpdateManyAsync(filter, update);
}
catch (Exception e)
{
throw;
}
}
public static List<T> Find<T>(string key, object value)
{
try
{
var collection = GetCollection<T>();
var res = collection.Find(Builders<T>.Filter.Eq(key, value)).ToList();
return res;
}
catch (Exception e)
{
throw;
}
return default;
}
public static List<T> Find<T>()
{
try
{
var collection = GetCollection<T>();
var res = collection.Find(Filter).ToList();
return res;
}
catch (Exception e)
{
throw;
}
return default;
}
public static List<T> Find<T>(string key,int count,bool asc)
{
try
{
var list = Sort<T>(key,count,asc);
return list;
}
catch (Exception e)
{
throw;
}
return default;
}
private static List<T> Sort<T>(string key,int count, bool asc = true)
{
var coll = GetCollection<T>();
FilterDefinitionBuilder<T> builderFilter = Builders<T>.Filter;
SortDefinitionBuilder<T> builderSort = Builders<T>.Sort;
SortDefinition<T> sort = null;
if (asc)
{
sort = builderSort.Ascending(key);
}
else
{
sort = builderSort.Descending(key);
}
try
{
var result = coll.Find<T>(Filter).Sort(sort).Limit(count).ToList();
return result;
}
catch (Exception)
{
throw;
}
return default;
}
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步