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

相关推荐
李宥小哥17 分钟前
C#基础07-类与对象
服务器·数据库·c#
樱木...18 分钟前
MySQL 8.0 新特性之原子 DDL
数据库·mysql
1688red44 分钟前
MySQL连接时提示ERROR 2002 (HY000)解决方案
数据库·mysql
代码小菜鸡6661 小时前
10.2 刷题知识点总结(1) ---- 正则表达式
数据库
lagelangri6662 小时前
数据库连接池以及HikariCP使用
数据库·oracle
意疏3 小时前
平替MongoDB:金仓多模数据库助力电子证照国产化实践
数据库·mongodb
gsfl3 小时前
Redis 持久化机制
数据库·redis·缓存
老朋友此林4 小时前
一文快速入门 MongoDB 、MongoDB 8.2 下载安装、增删改查操作、索引、SpringBoot整合 Spring Data MongoDB
数据库·mongodb·springboot
炬火初现5 小时前
SQL——子查询
数据库·sql
semantist@语校5 小时前
语校网500所里程碑:日本语言学校数据库的标准化与可追溯机制
大数据·数据库·人工智能·百度·语言模型·oracle·github