门户网站建设方案是什么意思,成品网页大全下载,微信上wordpress,网页游戏链接大全MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。今天主要给大家介绍一下C#编程语言下Mongodb的用法。开发环境为VS2015示例主要包括数据的增删改查、分页查询、文件存储等功能。有需要的朋友可以一起学习一下。… MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。今天主要给大家介绍一下C#编程语言下Mongodb的用法。开发环境为VS2015示例主要包括数据的增删改查、分页查询、文件存储等功能。有需要的朋友可以一起学习一下。1、需要引用Mongodb程序集MongoDB.Bson.dllMongoDB.Driver.dll2、创建Mongodb工具类库 MongodbHelper.csusing MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
using MongoDB.Driver.GridFS;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;namespace MongodbHelper
{/// summary/// MongoDB的基本增删改查/// /summarypublic class MongodbTool{private readonly MongoDatabase _db;//数据库默认地址private readonly string host ConfigurationManager.AppSettings[db_host];//数据库默认名称private readonly string db_name ConfigurationManager.AppSettings[db_name];public MongodbTool(){var client new MongoClient(host); //ip及端口var server client.GetServer();_db server.GetDatabase(db_name); //数据库名称}#region 通用增删改查/// summary/// 新增单个实体模型 modifiy by 2020-11-11/// /summary/// typeparam nameT/typeparam/// param nameentity/param/// returnsTrue:成功,False:失败/returnspublic bool InsertT(T entity){bool isOk true;try{BsonDocument doc entity.ToBsonDocument();WriteConcernResult result this._db.GetCollection(typeof(T).Name).Insert(doc);isOk result.Ok;}catch (Exception ex){}return isOk;}/// summary/// 新增实体集合模型/// /summary/// typeparam nameT/typeparam/// param nameentity/param/// returnsTrue:成功,False:失败/returnspublic bool AddT(IEnumerableT entity){bool isOk true;try{int s 1;IEnumerableWriteConcernResult results this._db.GetCollection(typeof(T).Name).InsertBatch(entity);foreach (var item in results){if (item.Ok)isOk true;elseisOk false;}}catch (Exception ex){}return isOk;}/// summary/// 查询单条数据/// /summary/// typeparam nameT/typeparam/// param nameField查询属性字段/param/// param nameValue字段值/param/// returns返回当前实体/returnspublic T FindOneT(string Field, string Value){T oneEntity default(T);try{FindOneArgs args new FindOneArgs{Query Query.EQ(Field, Value)};oneEntity this._db.GetCollection(typeof(T).Name).FindOneAsT(args);this._db.GetCollection(typeof(T).Name).FindAsT(Query.GTE(Field, Value)).ToList();}catch (Exception ex){}return oneEntity;}/// summary/// 查询多条数据/// /summary/// typeparam nameT/typeparam/// param nameField查询属性字段/param/// param nameValue字段值/param/// returns返回当前实体集合/returnspublic ListT FindMoreT(string Field, string Value){ListT list new ListT();try{list this._db.GetCollection(typeof(T).Name).FindAsT(Query.GTE(Field, Value)).ToList();}catch (Exception ex){}return list;}/// summary/// 查询文档所有数据/// /summary/// typeparam nameT/typeparam/// returns/returnspublic ListT FindAllMoreT(){ListT list new ListT();try{list this._db.GetCollection(typeof(T).Name).FindAllAsT().ToList();}catch (Exception ex){}return list;}/// summary/// 分页查询文档/// /summary/// typeparam nameT/typeparam/// param namepageIndex页次/param/// param namepageRow每页显示记录数/param/// param nametotal总记录数/param/// returns/returnspublic ListT FindMoreForPageT(int pageIndex, int pageRow, ref long total){ListT list new ListT();try{total this._db.GetCollection(typeof(T).Name).FindAllAsT().Count(); //获取总记录数if (pageIndex 1){list this._db.GetCollection(typeof(T).Name).FindAllAsT().SetLimit(pageRow).ToList();}else{var bd this._db.GetCollection(typeof(T).Name).FindAll().SetSortOrder(_id:1).SetLimit((pageIndex - 1) * pageRow).Last(); //获取最后一个ID主键var el bd.GetElement(0);var value el.Value;list this._db.GetCollection(typeof(T).Name).FindAsT(Query.GT(_id, value)).SetSortOrder(_id:1).SetLimit(pageRow).ToList();}}catch (Exception ex){}return list;}/// summary/// by 2020 ADD/// /summary/// typeparam nameT/typeparam/// param namequery查询条件/param/// param namepageIndex当前页/param/// param namerows行数/param/// param nametotalCount总行数/param/// returns/returnspublic ListT FindPageNewAddT(IMongoQuery query, int pageIndex, int rows, ref long totalCount){ListT list new ListT();int skipCount 0;try{if (pageIndex 1){skipCount (pageIndex - 1) * rows;}else{pageIndex 1;}totalCount this._db.GetCollection(typeof(T).Name).FindAsT(query).Count();if (totalCount 0){list this._db.GetCollection(typeof(T).Name).FindAsT(query).SetFlags(QueryFlags.NoCursorTimeout).SetSortOrder().SetSkip(skipCount).SetLimit(rows).ToList();}}catch (Exception){throw;}return list;}/// summary/// 按条件分页查询/// /summary/// typeparam nameT/typeparam/// param namequery查询条件/param/// param namepageIndex页次/param/// param namepageRow每页显示记录数/param/// param nametotal总记录数/param/// returns/returnspublic ListT FindMoreForPageByCondionT(IMongoQuery query, int pageIndex, int pageRow, ref long total){ListT list new ListT();try{total this._db.GetCollection(typeof(T).Name).FindAsT(query).Count();//获取总记录数if (pageIndex 1){list this._db.GetCollection(typeof(T).Name).FindAsT(query).SetSortOrder(SortBy.Descending(CreateDate)).SetLimit(pageRow).ToList();}else{var bd this._db.GetCollection(typeof(T).Name).Find(query).SetSortOrder(_id:1).SetLimit((pageIndex - 1) * pageRow).Last(); //获取最后一个ID主键var el bd.GetElement(0);var value el.Value;list this._db.GetCollection(typeof(T).Name).FindAsT(query).SetSortOrder(_id:1).SetSkip(pageRow).SetLimit(pageRow).ToList();}}catch (Exception ex){}return list;}/// summary/// 更新实体单个字段值/// /summary/// typeparam nameT/typeparam/// param namewhereField条件字段/param/// param namewhereValue条件字段值/param/// param nameupdateField修改字段/param/// param nameupdateValue修改字段值/param/// returns/returnspublic bool UpdateEntityT(string whereField, string whereValue, string updateField, string updateValue){bool isOk true;try{var query Query.EQ(whereField, whereValue);var update Update.Set(updateField, updateValue);WriteConcernResult result this._db.GetCollection(typeof(T).Name).Update(query, update);if (!result.Ok)isOk false;}catch (Exception ex){}return isOk;}/// summary/// 更新整个实体模型字段/// /summary/// typeparam nameT泛型参数/typeparam/// param namewhereField条件字段/param/// param namewhereValue条件值/param/// param nameupdateEntity实体模型/param/// returnsTrue:成功,False:失败/returnspublic bool UpdateEntityMoreFieldsT(string whereField, string whereValue, T updateEntity){bool isOk true;try{var query Query.EQ(whereField, whereValue);BsonDocument bsonDoc updateEntity.ToBsonDocument(typeof(T));var update new UpdateDocument{{$set,bsonDoc}};WriteConcernResult result this._db.GetCollection(typeof(T).Name).Update(query, update);if (!result.Ok)isOk false;}catch (Exception ex){}return isOk;}/// summary/// 删除实体文档/// /summary/// typeparam nameT泛型参数/typeparam/// param namewhereField条件字段/param/// param namewhereValue条件值/param/// returns/returnspublic bool DelEntityT(string whereField, string whereValue){bool isOk true;try{var query Query.EQ(whereField, whereValue);WriteConcernResult result this._db.GetCollection(typeof(T).Name).Remove(query);if (!result.Ok)isOk false;}catch (Exception ex){}return isOk;}#endregion#region GridFS 文件操作/// summary////// /summary/// returns/returnspublic MongoCursorMongoGridFSFileInfo FindAll(){return this._db.GetGridFS(MongoGridFSSettings.Defaults).FindAll();}/// summary////// /summary/// param namefilePath/parampublic void UploadFile(string filePath){FileInfo fi new FileInfo(filePath);this._db.GetGridFS(MongoGridFSSettings.Defaults).Upload(filePath, fi.Name);}/// summary////// /summary/// param namefilePath/param/// param namefileName/parampublic void UploadFile(string filePath, string fileName){this._db.GetGridFS(MongoGridFSSettings.Defaults).Upload(filePath, fileName);}/// summary///下载文件保存到默认目录/// /summary/// param namefileName/param/// param namefilePath/parampublic void DownloadFile(string fileName){this._db.GetGridFS(MongoGridFSSettings.Defaults).Download(fileName);}/// summary///下载文件保存到其他目录/// /summary/// param namefileName/param/// param namefilePath/parampublic void DownloadFileOther(string localFileName, string remoteFileName){this._db.GetGridFS(MongoGridFSSettings.Defaults).Download(localFileName,remoteFileName);}/// summary////// /summary/// param namefileName/parampublic void DeleteFile(string fileName){this._db.GetGridFS(MongoGridFSSettings.Defaults).Delete(fileName);}/// summary////// /summarypublic void DeleteAll(){foreach (var inst in this._db.GetGridFS(MongoGridFSSettings.Defaults).FindAll()){inst.Delete();}} #endregion}
}
3、创建实体 User.csusing MongoDB.Bson;
namespace MongoHelper.Model
{public class User{public ObjectId _id;public string name { get; set; }public int age { get; set; }}
}
4、调用示例代码 var list new ListUser();for (int i 0; i 100; i){User user new User();user.age 20 i;user.name 测试 i;list.Add(user);}//新增实体//tool.Add(list);//更新实体//tool.UpdateEntityUser(name, 测试, age, 99);//删除操作//tool.DelEntityUser(name,测试);long total 0;//构造查询条件IMongoQuery query Query.And(Query.Matches(name, 1));//分页查询数据var ll tool.FindMoreForPageByCondionUser(query, 0, 10, ref total);// 文件操作var model tool.FindAllMoreUser();string folder E:\photo;DirectoryInfo di new DirectoryInfo(folder);//循环读取文件上传foreach (var file in di.GetFiles()){tool.UploadFile(file.FullName, file.Name);}var fileModel tool.FindAll().First();// 保存文件指定目录tool.DownloadFileOther(D:\\fileModel.Name, fileModel.Name);//下载文件到当前目录pictureBox1.ImageLocation D:\\fileModel.Name;
具体的代码地址https://gitee.com/hgm1989/mongodb-demo如有问题可以随时沟通交流。IT技术分享社区个人博客网站https://programmerblog.xyz文章推荐程序员效率画流程图常用的工具程序员效率整理常用的在线笔记软件远程办公常用的远程协助软件你都知道吗51单片机程序下载、ISP及串口基础知识硬件断路器、接触器、继电器基础知识