dotnet core C# 数据库原生操作类,运行mongodb脚本

江湖百晓生2年前 (2022-05-31)c# net core831

dotnet core C# 数据库原生操作类,运行mongodb脚本

/// <summary>
	/// MongoDb原生数据操作类
	/// </summary>
	public class MongoDbHelperForSql : BaseEntity
	{
		//数据库
		private readonly IMongoDatabase db = null;


		public MongoDbHelperForSql()
		{
			this.db = MongoDB.CreateDB();
		}


		/// <summary>
		/// 获取数据集
		/// </summary>
		/// <param name="tbname">数据集名称</param>
		/// <returns></returns>
		IMongoCollection<BsonDocument> Collection(string tbname)
		{
			return db.GetCollection<BsonDocument>(tbname);
		}


		/// <summary>
		/// 查询数据
		/// </summary>
		/// <param name="CollectionName">数据集名(表名)</param>
		/// <param name="querystr">查询条件,如:{"AA":11}</param>
		/// <param name="pagesize">分页大小</param>
		/// <param name="page">当前页</param>
		/// <returns></returns>
		public async Task<List<BsonDocument>> GetDataJson(string CollectionName, string querystr, int pagesize = 10, int page = 1, SortDefinition<BsonDocument> sort = null)
		{
			//var filter = Builders<BsonDocument>.Filter.AnyGt("Rid", 1);		

			var colt = Collection(CollectionName);


			var rtn = await colt.Find(querystr).Sort(sort).Limit(pagesize).Skip((page - 1) * pagesize).ToListAsync();
			return rtn;
		}


		/// <summary>
		/// 查询所有数据
		/// </summary>
		/// <param name="CollectionName">数据集名</param>
		/// <param name="querystr">查询条件</param>
		/// <returns></returns>
		public async Task<List<BsonDocument>> GetDataJson(string CollectionName,string querystr)
		{
			var colt = Collection(CollectionName);				
			var rtn=await colt.Find(querystr).ToListAsync();
			return rtn;
		}

		/// <summary>
		/// 查询所有数据,返回指定字段
		/// </summary>
		/// <param name="CollectionName">数据集名</param>
		/// <param name="querystr">查询条件</param>
		/// <param name="filds">返回指定字段</param>
		/// <returns></returns>
		public async Task<List<BsonDocument>> GetDataJson(string CollectionName,string querystr,ProjectionDefinition<BsonDocument> filds)
		{
			var colt = Collection(CollectionName);			

			var rtn = await colt.Find(querystr).Project(filds).ToListAsync();
			return rtn;
		}


		/// <summary>
		/// 获取第一条记录
		/// </summary>
		/// <param name="CollectionName">数据集名称</param>
		/// <param name="id">数据主键</param>
		/// <returns></returns>
		public async Task<BsonDocument> GetDataJsonFirst(string CollectionName, string id)
		{
			var filter = Builders<BsonDocument>.Filter.Eq("_id", ObjectId.Parse(id));
			var colt = Collection(CollectionName);
			var rtn = await colt.Find(filter).FirstOrDefaultAsync();
			return rtn;

		}


		/// <summary>
		/// 新增数据
		/// </summary>
		/// <param name="CollectionName">数据集(表名)</param>
		/// <param name="insertJson">等新增Json数据</param>
		/// <returns></returns>
		public async Task<bool> MGInsert(string CollectionName, string insertJson)
		{
			var colt = Collection(CollectionName);
			try
			{
				await colt.InsertOneAsync(BsonDocument.Parse(insertJson));
				return true;
			}
			catch
			{
				return false;
			}
		}


		/// <summary>
		/// 更新
		/// </summary>
		/// <param name="CollectionName">数据集名称</param>
		/// <param name="filter">条件,如 {"_id":ObjectId("627e032ae3100000c7002455")}</param>
		/// <param name="upjson">更新内容,如 {$set:{"AA":21,"BB":31}}</param>
		/// <returns></returns>
		public async Task<UpdateResult> MGUpdate(string CollectionName, string findstr, string upstr)
		{
			//	var uplist = Builders<BsonDocument>.Update;
			//var updates = new List<UpdateDefinition<BsonDocument>>();
			//foreach (var obj in upjson)
			//{
			//	var s = obj;
			//	updates.Add(uplist.Set(s.Key, s.Value.ToString()));
			//}
			var colt = Collection(CollectionName);
			//uplist.Combine(updates)
			var rtn = await colt.UpdateManyAsync(findstr, upstr);
			return rtn;
		}



		/// <summary>
		/// 删除
		/// </summary>
		/// <param name="CollectionName">数据集名称</param>
		/// <param name="findstr">条件 如:{"_id":ObjectId("627e032ae3100000c7002455")}</param>
		/// <returns></returns>
		public async Task<DeleteResult> MGDelete(string CollectionName, string findstr)
		{
			var colt = Collection(CollectionName);
			var rtn = await colt.DeleteManyAsync(findstr);
			return rtn;
		}



	}


发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。