关于Asp.Net Core MongoDB的实例代码

废话不说直接上代码;

关于Asp.Net Core MongoDB的实例代码关于Asp.Net Core MongoDB的实例代码

using MongoDB.Bson.Serialization.Attributes;namespace XL.Core.MongoDB{public interface IEntity{/// /// 主键///         [BsonId]        TKey Id { get; set; }    }}

View Code

关于Asp.Net Core MongoDB的实例代码关于Asp.Net Core MongoDB的实例代码

    [BsonIgnoreExtraElements(Inherited = true)]public abstract class Entity : IEntity{/// /// 主键///         [BsonRepresentation(BsonType.ObjectId)]public virtual string Id { get; set; }            }

View Code

关于Asp.Net Core MongoDB的实例代码关于Asp.Net Core MongoDB的实例代码

    public interface IRepository : IQueryable where T : IEntity{#region Fileds/// /// MongoDB表/// IMongoCollection DbSet { get; }/// /// MongoDB库/// IMongoDatabase DbContext { get; }#endregion#region Find/// /// 根据主键获取对象/// /// ///         T GetById(TKey id);/// /// 获取对象/// /// /// IEnumerable Get(Expression<Func> predicate);/// /// 获取对象/// /// /// /// Task<IEnumerable> GetAsync(Expression<Func> predicate,            CancellationToken cancellationToken = default(CancellationToken));#endregion#region Insert/// /// 插入文档/// /// ///         T Insert(T entity);/// /// 异步插入文档/// /// /// /// Task InsertAsync(T entity, CancellationToken cancellationToken = default(CancellationToken));/// ///     Adds the new entities in the repository./// /// The entities of type T.void Insert(IEnumerable entities);/// /// 插入文档/// /// /// /// Task InsertAsync(IEnumerable entities, CancellationToken cancellationToken = default(CancellationToken));#endregion#region Update/// /// 更新文档/// /// ///         UpdateResult Update(T entity);/// /// 异步更新文档/// /// /// /// Task UpdateAsync(T entity, CancellationToken cancellationToken = default(CancellationToken));#endregion#region Delete/// /// 根据主键ID/// /// ///         T Delete(TKey id);/// /// 异步根据ID删除文档/// /// /// /// Task DeleteAsync(TKey id, CancellationToken cancellationToken = default(CancellationToken));/// /// 异步删除/// /// /// /// Task DeleteAsync(Expression<Func> predicate,            CancellationToken cancellationToken = default(CancellationToken));/// /// 删除/// /// /// DeleteResult Delete(Expression<Func> predicate);#endregion#region Other/// /// 计数/// /// /// long Count(Expression<Func> predicate);/// /// 计数/// /// /// /// Task CountAsync(Expression<Func> predicate,            CancellationToken cancellationToken = new CancellationToken());/// /// 是否存在/// /// /// bool Exists(Expression<Func> predicate);#endregion#region Query/// /// 分页/// 注:只适合单属性排序/// /// /// /// /// /// IEnumerable Paged(Expression<Func> predicate, Expression<Func> sortBy,int pageSize, int pageIndex = 1);/// /// /// /// /// /// /// /// /// Task<List> PagedAsync(Expression<Func> predicate, Expression<Func> sortBy,int pageSize, int pageIndex = 1,            CancellationToken cancellationToken = new CancellationToken());#endregion}  public interface IRepository : IRepositorywhere T : IEntity{    }

View Code

关于Asp.Net Core MongoDB的实例代码关于Asp.Net Core MongoDB的实例代码

  public class MongoRepository : IRepository where T : IEntity{#region Constructorprotected MongoRepository(IMongoCollection collection)        {            DbSet = collection;            DbContext = collection.Database;        }#endregionpublic IEnumerator GetEnumerator()        {return DbSet.AsQueryable().GetEnumerator();        }        IEnumerator IEnumerable.GetEnumerator()        {return GetEnumerator();        }#region 字段public Type ElementType => DbSet.AsQueryable().ElementType;public Expression Expression => DbSet.AsQueryable().Expression;public IQueryProvider Provider => DbSet.AsQueryable().Provider;public IMongoCollection DbSet { get; }public IMongoDatabase DbContext { get; }#endregion#region Findpublic T GetById(string id)        {return Get(a => a.Id.Equals(id)).FirstOrDefault();        }public IEnumerable Get(Expression<Func> predicate)        {return DbSet.FindSync(predicate).Current;        }public async Task<IEnumerable> GetAsync(Expression<Func> predicate,            CancellationToken cancellationToken = new CancellationToken())        {var task = await DbSet.FindAsync(predicate, null, cancellationToken);return task.Current;        }#endregion#region Insertpublic T Insert(T entity)        {            DbSet.InsertOne(entity);return entity;        }public Task InsertAsync(T entity, CancellationToken cancellationToken = new CancellationToken())        {return DbSet.InsertOneAsync(entity, null, cancellationToken);        }public void Insert(IEnumerable entities)        {            DbSet.InsertMany(entities);        }public Task InsertAsync(IEnumerable entities, CancellationToken cancellationToken = new CancellationToken())        {return DbSet.InsertManyAsync(entities, null, cancellationToken);        }#endregion#region Updatepublic UpdateResult Update(T entity)        {var doc = entity.ToBsonDocument();return DbSet.UpdateOne(Builders.Filter.Eq(e => e.Id, entity.Id),new BsonDocumentUpdateDefinition(doc));        }public Task UpdateAsync(T entity, CancellationToken cancellationToken = new CancellationToken())        {var doc = entity.ToBsonDocument();return DbSet.UpdateOneAsync(Builders.Filter.Eq(e => e.Id, entity.Id),new BsonDocumentUpdateDefinition(doc), cancellationToken: cancellationToken);        }#endregion#region Deletepublic T Delete(string id)        {return DbSet.FindOneAndDelete(a => a.Id.Equals(id));        }public Task DeleteAsync(string id, CancellationToken cancellationToken = new CancellationToken())        {return DbSet.FindOneAndDeleteAsync(a => a.Id.Equals(id), null, cancellationToken);        }public Task DeleteAsync(Expression<Func> predicate,            CancellationToken cancellationToken = new CancellationToken())        {return DbSet.DeleteManyAsync(predicate, cancellationToken);        }public DeleteResult Delete(Expression<Func> predicate)        {return DbSet.DeleteMany(predicate);        }#endregion#region Otherpublic long Count(Expression<Func> predicate)        {return DbSet.Count(predicate);        }public Task CountAsync(Expression<Func> predicate,            CancellationToken cancellationToken = new CancellationToken())        {return DbSet.CountAsync(predicate, null, cancellationToken);        }public bool Exists(Expression<Func> predicate)        {return Get(predicate).Any();        }#endregion#region Pagepublic IEnumerable Paged(Expression<Func> predicate, Expression<Func> sortBy,int pageSize, int pageIndex = 1)        {var sort = Builders.Sort.Descending(sortBy);return DbSet.Find(predicate).Sort(sort).Skip(pageSize * pageIndex - 1).Limit(pageSize).ToList();        }public Task<List> PagedAsync(Expression<Func> predicate, Expression<Func> sortBy,int pageSize, int pageIndex = 1,            CancellationToken cancellationToken = new CancellationToken())        {return Task.Run(() =>{var sort = Builders.Sort.Descending(sortBy);return DbSet.Find(predicate).Sort(sort).Skip(pageSize * pageIndex - 1).Limit(pageSize).ToList();            }, cancellationToken);        }#endregion#region Helper/// /// 获取类型的所有属性信息/// /// /// /// /// private PropertyInfo[] GetPropertyInfos(Expression<Func> select)        {var body = select.Body;switch (body.NodeType)            {case ExpressionType.Parameter:var parameterExpression = body as ParameterExpression;if (parameterExpression != null) return parameterExpression.Type.GetProperties();break;case ExpressionType.New:var newExpression = body as NewExpression;if (newExpression != null)return newExpression.Members.Select(m => m as PropertyInfo).ToArray();break;            }return null;        }#endregion}

View Code

使用如下:

关于Asp.Net Core MongoDB的实例代码关于Asp.Net Core MongoDB的实例代码

    public class MongoDBSetting    {public string DataBase { get; set; }public string UserName { get; set; }public string Password { get; set; }public List Services { get; set; }    }public class MongoServers    {public string Host { get; set; }public int Port { get; set; } = 27017;    }

View Code

 

关于Asp.Net Core MongoDB的实例代码关于Asp.Net Core MongoDB的实例代码

 public class LogsContext    {private readonly IMongoDatabase _db;public LogsContext(IOptions options)        {var permissionSystem =MongoCredential.CreateCredential(options.Value.DataBase, options.Value.UserName,                    options.Value.Password);var services = new List();foreach (var item in options.Value.Services)            {                services.Add(new MongoServerAddress(item.Host, item.Port));            }var settings = new MongoClientSettings            {                Credentials = new[] {permissionSystem},                Servers = services            };var _mongoClient = new MongoClient(settings);            _db = _mongoClient.GetDatabase(options.Value.DataBase);        }public IMongoCollection ErrorLog => _db.GetCollection("Error");public IMongoCollection WarningLog => _db.GetCollection("Warning");    }

View Code

关于Asp.Net Core MongoDB的实例代码关于Asp.Net Core MongoDB的实例代码

 public static IServiceCollection UserMongoLog(this IServiceCollection services,            IConfigurationSection configurationSection)        {            services.Configure(configurationSection);            services.AddSingleton();return services;        }

View Code

关于Asp.Net Core MongoDB的实例代码关于Asp.Net Core MongoDB的实例代码

public interface IErrorLogService : IRepository{    }public class ErrorLogService : MongoRepository, IErrorLogService    {public ErrorLogService(LogsContext dbContext) : base(dbContext.ErrorLog)        {        }    }

View Code

最后:

关于Asp.Net Core MongoDB的实例代码关于Asp.Net Core MongoDB的实例代码

services.UserMongoLog(Configuration.GetSection("Mongo.Log"));

View Code

关于Asp.Net Core MongoDB的实例代码关于Asp.Net Core MongoDB的实例代码

"Mongo.Log": {"DataBase": "PermissionSystem","UserName": "sa","Password": "shtx@123","Services": [      {"Host": "192.168.1.6","Port": "27017"  }    ]  }

View Code

刚学洗使用MongoDB,才疏学浅,请大神多多指教

以上就是关于Asp.Net Core MongoDB的实例代码的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1432437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 08:05:56
下一篇 2025年12月17日 08:06:26

相关推荐

  • 为什么多年的经验让我选择全栈而不是平均栈

    在全栈和平均栈开发方面工作了 6 年多,我可以告诉您,虽然这两种方法都是流行且有效的方法,但它们满足不同的需求,并且有自己的优点和缺点。这两个堆栈都可以帮助您创建 Web 应用程序,但它们的实现方式却截然不同。如果您在两者之间难以选择,我希望我在两者之间的经验能给您一些有用的见解。 在这篇文章中,我…

    2025年12月24日
    000
  • 使用HTML表单GET方法创建带查询参数的动态搜索链接

    本教程详细阐述了如何在网页中,通过简单地将HTML表单的提交方法从`POST`更改为`GET`,来自动生成包含用户选择搜索条件的动态URL查询参数。这使得搜索结果页面的链接可分享、可收藏,并简化了%ignore_a_1%生成复杂URL的逻辑,后端可直接从URL中解析查询参数进行数据检索。 引言:动态…

    2025年12月23日
    000
  • Web表单提交:如何利用GET方法构建动态查询链接

    本文将指导您如何利用html表单的get方法,根据用户输入的搜索条件动态生成带有查询参数的url。当用户在表单中输入数据并提交时,get方法会自动将表单字段及其值附加到url作为查询字符串,从而创建如`/search?param1=value1&param2=value2`的链接。这对于实现…

    2025年12月23日
    000
  • Node.js中多字段多文件上传与MongoDB路径存储:Multer实践指南

    本教程详细讲解如何在node.js中使用multer处理html表单中的多字段文件上传,并将文件保存到服务器指定目录。核心内容包括multer配置,express路由集成,以及如何在控制器中正确获取上传文件信息并将其存储路径而非文件本身的数据存入mongodb,优化数据库性能和可维护性。 在现代We…

    2025年12月23日
    000
  • Node.js 多字段图片上传与 MongoDB 路径存储实践教程

    本教程详细阐述了如何在 Node.js 环境下,利用 Multer 中间件处理来自 HTML 表单的多个文件字段上传,并将图片分别存储到服务器的不同目录。更重要的是,教程纠正了直接将图片二进制数据存入 MongoDB 的常见误区,转而采用最佳实践——仅在数据库中存储图片的文件路径,从而优化数据库性能…

    2025年12月23日
    000
  • MongoDB/Mongoose中从数组中按ID删除子文档的教程

    本教程详细阐述了如何在mongodb/mongoose环境中,从一个文档的嵌套数组中,根据子文档的_id删除特定对象。我们将利用mongoose自动生成的_id字段和mongodb的$pull操作符,通过构建后端api路由,实现对特定子文档的精确、高效删除,并提供前端集成示例。 在构建复杂的应用程序…

    2025年12月23日
    000
  • 在MongoDB中通过子文档ID删除数组中的对象

    在MongoDB中处理复杂的数据结构时,我们经常会遇到需要在文档内部的数组中存储一系列子文档(或称内嵌文档)的场景。例如,在一个电影数据库中,一部电影文档可能包含一个`references`数组,其中每个元素都是一个描述电影引用的独立对象。当需要删除某个特定引用而非整个电影文档时,就需要一种精确的方…

    2025年12月23日
    000
  • MongoDB中通过子文档ID从数组删除对象的教程

    本教程详细介绍了如何在%ignore_a_1%中,利用mongoose框架从父文档的数组字段中删除特定的子文档。我们将探讨mongodb的`$pull`操作符,并提供完整的服务器端(node.js/express)和客户端(ejs)代码示例,指导你如何通过子文档的`_id`高效地移除数组中的元素,确…

    2025年12月23日
    000
  • 从MongoDB数组中按ID删除内嵌文档的教程

    本教程详细介绍了如何在mongodb中使用mongoose和`$pull`操作符,从一个文档的数组字段中删除特定的内嵌文档。我们将通过一个电影参考数据库的示例,演示如何根据内嵌文档的唯一id(`_id`)来精准定位并移除数组中的元素,确保数据管理的精确性和效率。 在构建数据库应用程序时,经常会遇到需…

    2025年12月23日
    000
  • HTML数据如何实现数据智能 HTML数据智能分析的技术架构

    实现HTML数据智能分析需构建包含采集、解析、存储、分析与可视化的闭环系统,首先通过爬虫技术获取网页数据并进行清洗标准化,接着利用DOM树分析与NLP技术提取结构化信息,随后将数据存入合适数据库或数据仓库并建立元数据管理机制,进而应用AI模型开展分类、情感分析、趋势预测与知识图谱构建等智能分析,最终…

    2025年12月23日
    000
  • HTML数据如何构建数据市场 HTML数据市场平台的架构设计

    答案是构建HTML数据市场需整合采集、管理、交易与合规体系,通过爬虫或上传获取网页数据,利用解析引擎将HTML转为结构化信息并标注元数据,依托分布式存储与版本控制保障数据可用性,建立索引分类和质量评估机制提升检索效率,通过商品发布、搜索推荐、API服务和计费系统实现数据流通,同时遵守法律规范,实施身…

    2025年12月23日
    000
  • HTML数据如何构建数据生态 HTML数据生态系统的建设思路

    HTML数据本身是网页内容的载体,但要将其转化为可用的数据资产并构建完整的数据生态系统,需要系统化的采集、处理、整合与应用流程。关键在于将静态的HTML内容动态化、结构化,并与其他数据源打通,形成可持续更新和高效利用的数据闭环。 1. 数据采集:从HTML中提取有效信息 构建HTML数据生态的第一步…

    2025年12月23日
    000
  • HTML数据如何实现分布式采集 HTML数据分布式爬虫的架构设计

    答案:构建分布式HTML采集系统需整合任务调度、去重、存储与监控模块,以Redis为核心协调任务分发与去重,通过消息队列实现负载均衡,结合布隆过滤器减少重复抓取,利用无状态工作节点支持弹性扩展,依托ZooKeeper保障高可用,并集成反爬适配与请求控制机制,确保系统稳定高效运行。 要实现HTML数据…

    好文分享 2025年12月23日
    000
  • HTML5在线如何添加实时编辑功能 HTML5在线协作工具的集成方案

    实现实时编辑需结合WebSocket与协同算法,核心是内容同步和冲突解决。2. 使用WebSocket实现低延迟通信,用户操作实时发送至服务器并广播给其他客户端。3. 冲突处理推荐CRDT或OT算法,CRDT因逻辑简单、天然无冲突更适用于现代系统。4. 集成Y%ignore_a_1%等成熟库可快速搭…

    好文分享 2025年12月23日
    000
  • 如何实现HTML在线编辑功能_HTML在线编辑功能实现方法与技术选型指南

    答案:实现HTML在线编辑需选型富文本编辑器如TinyMCE、Quill或CKEditor,通过前端获取HTML字符串并经AJAX提交,后端存储至数据库,同时使用DOMPurify防范XSS攻击,结合实时预览与样式隔离提升体验,并可扩展图片上传、代码高亮等功能。 要实现HTML在线编辑功能,核心是提…

    2025年12月23日
    000
  • 如何实现HTML在线协作编辑_HTML在线协作编辑实现技术与实时同步方案

    实现HTML在线协作编辑需选型合适编辑器并构建实时同步体系。推荐Tiptap + Yjs组合,基于CRDT模型实现无冲突数据合并,通过WebSocket或Socket.IO建立低延迟通信,配合Y-WebRTC/Y-Socket.IO完成多端状态同步,后端可用Node.js搭建中继服务器,必要时结合M…

    2025年12月23日
    000
  • Node.js中基于JWT和Cookie实现持久化登录状态管理与免登录访问

    本文详细阐述了如何在node.js应用中,利用jwt(json web tokens)和cookie实现持久化的用户登录状态管理,从而避免用户在每次访问时重复登录。通过引入一个认证中间件,我们能够有效地检查用户是否已通过有效令牌进行身份验证,并据此控制页面访问权限,实现无缝的用户体验,同时提供了登出…

    2025年12月23日
    000
  • 使用FastAPI实现POST请求后文件下载的教程

    本文详细介绍了在fastapi中处理post请求后下载文件的两种主要方法。第一种是直接使用`fileresponse`返回文件,适用于简单场景,通过设置`content-disposition`头部实现强制下载,并探讨了内存加载和流式传输大文件的替代方案。第二种是异步下载模式,通过post请求生成文…

    2025年12月23日
    000
  • Spring Boot中将特定字段映射到HTML页面:DTO与视图渲染实践

    本文将深入探讨如何在Spring Boot应用中,从后端实体中选择性地提取特定字段,并将其高效且安全地渲染到HTML页面。我们将重点介绍数据传输对象(DTO)作为最佳实践,结合Spring MVC控制器和模板引擎(如Thymeleaf),实现数据展示层与业务逻辑的解耦,并讨论其他序列化控制策略。 1…

    2025年12月22日
    000
  • Spring Boot中将后端数据特定字段映射到HTML页面教程

    本教程详细阐述了如何在Spring Boot应用中,利用Thymeleaf模板引擎将后端服务获取的数据,仅提取并展示其特定字段(如标题和描述)到前端HTML页面。通过重构控制器方法并设计相应的HTML模板,实现数据与视图的有效分离与定制化渲染,同时辨析了@JsonIgnore注解的适用场景。 问题背…

    2025年12月22日
    000

发表回复

登录后才能评论
关注微信