net6中使用MongoDB

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、MongoDB是什么?

二、使用步骤

1.安装驱动

2.设置连接字符串、配置类

3.建立实体类

4.服务层

5.在Program添加服务

6.在Controller注入服务

总结


一、MongoDB是什么?

MongoDB 是一个开源的、可扩展的、跨平台的、面向文档的非关系型数据库,它由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

二、使用步骤

1.安装驱动

代码如下:

cs 复制代码
install-pack MongoDB.Driver

2.设置连接字符串、配置类

在appsettings.json中设置mongodb服务器地址、数据库

代码如下(示例):

XML 复制代码
 "MongoDbSetting": {
    "Connection": "mongodb://localhost:27017",
    "Database": "Test"
  }

建立相应的配置类

cs 复制代码
 public class MongoDbSetting
  {
        public string Connection { get; set; }
        public string Database { get; set; }
  }

3.建立实体类

代码如下(示例):

cs 复制代码
 public class Book
    {
        [BsonRepresentation(BsonType.ObjectId)]
        public string Id { get; set; }
        public string AuthorName { get; set; }
        public string Price { get; set; }
        public string PubTime { get; set; }
        public string Title { get; set; }
    }

4.服务层

代码如下(示例):

cs 复制代码
 public class BookService
    {

        private readonly IMongoCollection<Book> _mongDb;

        public BookService(IMongoDbSetting setting)
        {
            var client = new MongoClient(setting.Connection);
            var database = client.GetDatabase(setting.Database);
            _mongDb = database.GetCollection<Book>(nameof(Book));
        }

     
        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public Book Insert(Book model)
        {
            _mongDb.InsertOne(model);
            return model;
        }


        /// <summary>
        /// 编辑
        /// </summary>
        /// <param name="id"></param>
        /// <param name="model"></param>
        public void Update(Book model)
        {
            _mongDb.ReplaceOne(m => m.Id == model.Id, model);
        }

        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="model"></param>
        public void Delete(Book model)
        {
            _mongDb.DeleteOne(m => m.Id == model.Id);
        }

        /// <summary>
        /// 获取某一个对象
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Book Get(string id)
        {
            return _mongDb.Find<Book>(book => book.Id == id).FirstOrDefault();
        }

        /// <summary>
        /// 查询
        /// </summary>
        /// <param name="PageIndex"></param>
        /// <param name="PageSize"></param>
        /// <returns></returns>
        public List<Book> GetPageList(int PageIndex = 1, int PageSize = 10)
        {
            //设置排序字段
            var sort = Builders<Book>.Sort.Descending(it => it.PubTime);
            return _mongDb.Find<Book>(b => true).Sort(sort).Skip((PageIndex - 1) * 
           PageSize).Limit(PageSize).ToList();
        }

    }

5.在Program添加服务

代码如下(示例):

cs 复制代码
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using MyApI;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

#region 配置mongodb 
builder.Services.Configure<MongoDbSetting>(builder.Configuration.GetSection(nameof(MongoDbSetting)));
builder.Services.AddSingleton<IMongoDbSetting>(sp => sp.GetRequiredService<IOptions<MongoDbSetting>>().Value);
builder.Services.AddSingleton<BookService>();
#endregion 

builder.Services.Configure<ApiBehaviorOptions>((o) =>
{
    o.SuppressModelStateInvalidFilter = true;
});
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseAuthorization();

app.MapControllers();

app.Run();

6.在Controller注入服务

注入服务有三种方式(构造函数、属性、方法)通常一般选择构造函数的方式注入

在BookController中注入BookService 服务

代码如下(示例):

cs 复制代码
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class BookController : ControllerBase
    {
        private readonly BookService  _bookService;
        public BookController(BookService bookService) {
            _bookService=bookService;
        }     
        [HttpPost]
        public ActionResult Insert(Book model)
        {
            return new JsonResult(_bookService.Insert(model));
        }
        [HttpPost]
        public ActionResult Update(Book model)
        {
            _bookService.Update(model);
            return NoContent();
        }
        [HttpPost]
        public ActionResult Delete(Book model)
        {
            _bookService.Delete(model);
            return NoContent();
        }
        [HttpGet]
        public ActionResult Get(string id)
        {
            return new JsonResult(_bookService.Get(id));
        }
        [HttpGet]
        public ActionResult GetPageList(int PageIndex = 1, int PageSize = 10)
        {
            return new JsonResult(_bookService.GetPageList(PageIndex, PageSize));
        }
    }

总结

以上是我在.net core 对MongoDB数据库简单的使用

更多的使用查看官方文档MongoDB C# Driver --- C#/.NET

相关推荐
辻弋2018 分钟前
一键优化电源计划、游戏模式、独显强制、禁用后台录制——DeltaForceBooster专治三角洲行动卡顿掉帧,所有改动可一键还原
服务器·数据库·windows·游戏·电脑·php
Wang's Blog1 小时前
PostgreSQL笔记51: 基于 pgvector 构建企业级智能问答系统
数据库·笔记·postgresql
我星期八休息1 小时前
Linux—五种IO模型与非阻塞IO
linux·运维·服务器·网络·数据库·网络协议
SQL-First布道者1 小时前
全面解构传统持久层框架,拥抱真正的 SQL-First
java·数据库·spring boot·sql·spring·mybatis·spring jdbc
翼龙云_cloud2 小时前
阿里云国际版代理商:OSS自定义域名绑定与HTTPS配置排障教程
数据库·阿里云·https·云计算
日常筹谋记2 小时前
ATS选不对运维两行泪:数据中心市电与柴发切换场景的双电源自动转换开关选型笔记
运维·数据库·笔记
小蒜学长2 小时前
vue旅游攻略网站(代码+数据库+LW)
java·数据库·vue.js·spring boot·后端·旅游
山甫aa2 小时前
JavaWeb后端开发学习手册
java·开发语言·数据库·学习·mysql·springboot·web
JavaPub-rodert3 小时前
MongoDB 常用命令和常见问题大全
数据库·mongodb
Dovis(誓平步青云)4 小时前
从Redis指标采集到异常告警:redis_exporter + Prometheus 完整实战
服务器·数据库·人工智能·redis·架构·prometheus·vibe coding