当前位置: 首页 > news >正文

net6中使用MongoDB

目录

一、MongoDB是什么?

二、使用步骤

1.安装驱动

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

3.建立实体类

4.服务层

5.在Program添加服务

6.在Controller注入服务

总结


一、MongoDB是什么?

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

二、使用步骤

1.安装驱动

代码如下:

install-package MongoDB.Driver

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

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

代码如下(示例):

 "MongoDbSetting": {"Connection": "mongodb://localhost:27017","Database": "Test"}

建立相应的配置类

 public class MongoDbSetting:IMongoDbSetting{public string Connection { get; set; }public string Database { get; set; }}public interface IMongoDbSetting{public string Connection { get; set; }public string Database { get; set; }}

3.建立实体类

代码如下(示例):

   public class Book{[BsonRepresentation(BsonType.ObjectId)]public string Id { get; set; }public string AuthorName { get; set; }public float Price { get; set; }public DateTime PubTime { get; set; }public string Title { get; set; }}

4.服务层

代码如下(示例):

 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添加服务

代码如下(示例):

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 服务

代码如下(示例):

[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

相关文章:

net6中使用MongoDB

目录 一、MongoDB是什么&#xff1f; 二、使用步骤 1.安装驱动 2.设置连接字符串、配置类 3.建立实体类 4.服务层 5.在Program添加服务 6.在Controller注入服务 总结 一、MongoDB是什么&#xff1f; MongoDB 是一个开源的、可扩展的、跨平台的、面向文档的非关系型数据库&…...

vue中yarn install超时问题

囚笼中的网络固然可以稳定局势&#xff0c;不让猴子们得以随时醒悟&#xff01;给你吃的你就好好吃&#xff0c;不要有其他的翻然醒悟的时刻。无论如何&#xff0c;愚蠢的活着也是一种幸福&#xff0c;听着那些耐心寻味的统计幸福指数&#xff0c;我们不由的幸福的一批。。 最…...

vue3 引入 markdown编辑器

参考文档 安装依赖 pnpm install mavon-editor // "mavon-editor": "3.0.1",markdown 编辑器 <mavon-editor></mavon-editor>新增文本 <mavon-editor ref"editorRef" v-model"articleModel.text" codeStyle"…...

算法----K 和数对的最大数目

题目 给你一个整数数组 nums 和一个整数 k 。 每一步操作中&#xff0c;你需要从数组中选出和为 k 的两个整数&#xff0c;并将它们移出数组。 返回你可以对数组执行的最大操作数。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,4], k 5 输出&#xff1a;2 解释&…...

RocketMQ-源码架构

源码环境搭建 1、主要功能模块 RocketMQ官方Git仓库地址&#xff1a;GitHub - apache/rocketmq: Apache RocketMQ is a cloud native messaging and streaming platform, making it simple to build event-driven applications. RocketMQ的官方网站下载&#xff1a;下载 | R…...

14-1、IO流

14-1、IO流 lO流打开和关闭lO流打开模式lO流对象的状态 非格式化IO二进制IO读取二进制数据获取读长度写入二进制数据 读写指针 和 随机访问设置读/写指针位置获取读/写指针位置 字符串流 lO流打开和关闭 通过构造函数打开I/O流 其中filename表示文件路径&#xff0c;mode表示打…...

每日一道算法题 1

借鉴文章&#xff1a;Java-敏感字段加密 - 哔哩哔哩 题目描述 给定一个由多个命令字组成的命令字符串&#xff1b; 1、字符串长度小于等于127字节&#xff0c;只包含大小写字母&#xff0c;数字&#xff0c;下划线和偶数个双引号 2、命令字之间以一个或多个下划线_进行分割…...

【网络奇缘】- 计算机网络|深入学习物理层|网络安全

​ &#x1f308;个人主页: Aileen_0v0&#x1f525;系列专栏: 一见倾心,再见倾城 --- 计算机网络~&#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 回顾链接&#xff1a;http://t.csdnimg.cn/ZvPOS 这篇文章是关于深入学习原理参考模型-物理层的相关知识点&…...

❀expect命令运用于bash❀

目录 ❀expect命令运用于bash❀ expect使用原理 expet使用场景 常用的expect命令选项 Expect脚本的结尾 常用的expect命令选参数 Expect执行方式 单一分支语法 多分支模式语法第一种 多分支模式语法第二种 在shell 中嵌套expect Shell Here Document&#xff08;内…...

2023年团体程序设计天梯赛——总决赛题

F-L1-1 最好的文档 有一位软件工程师说过一句很有道理的话&#xff1a;“Good code is its own best documentation.”&#xff08;好代码本身就是最好的文档&#xff09;。本题就请你直接在屏幕上输出这句话。 输入格式&#xff1a; 本题没有输入。 输出格式&#xff1a; 在一…...

K8S 工具收集

杂货铺&#xff0c;我不用 K8S&#xff0c;把见过的常用工具放在这里&#xff0c;后面学的时候再来找 名称描述官网Pixie查看 k8s 的工具。集群性能、网络状态、pod 状态、热点图等HomeKubernetes Dashboard基于 Web 的 Kubernetes 集群用户界面。GithubGardenerSAP 开源的 K8…...

自动化测试之读取配置文件

前言&#xff1a; 在日常自动化测试开发工作中&#xff0c;经常要使用配置文件&#xff0c;进行环境配置&#xff0c;或进行数据驱动等。我们常常把这些文件放置在 resources 目录下&#xff0c;然后通过 getResource、ClassLoader.getResource 和 getResourceAsStream() 等方法…...

如何实现分布式调用跟踪?

分布式服务拆分以后&#xff0c;系统变得日趋复杂&#xff0c;业务的调用链也越来越长&#xff0c;如何快速定位线上故障&#xff0c;就需要依赖分布式调用跟踪技术。下面我们一起来看下分布式调用链相关的实现。 为什么需要分布式调用跟踪 随着分布式服务架构的流行&#xf…...

接口的性能优化(从前端、后端、数据库三个角度分析)

接口的性能优化&#xff08;前端、后端、数据库&#xff09; 主要通过三方面进行优化 前端后端数据库 前端优化 接口拆分 不要搞一个大而全的接口&#xff0c;要区分核心与非核心的接口&#xff0c;不然核心接口就会被非核心接口拖累 或者一个接口中大部分返回都很快&…...

区块链扩容问题研究【06】

1.Plasma&#xff1a;Plasma 是一种基于以太坊区块链的 Layer2 扩容方案&#xff0c;它通过建立一个分层结构的区块链网络&#xff0c;将大量的交易放到子链上进行处理&#xff0c;从而提高了以太坊的吞吐量。Plasma 还可以通过智能合约实现跨链交易&#xff0c;使得不同的区块…...

英语论文写作常用词汇积累

baseline&#xff1a;比较算法好坏中作为“参照物”而存在&#xff0c;在比较中作为基线&#xff1b;目的是比较提出算法的性能或者用以彰显所提出的算法的优势&#xff1b; benchmark&#xff1a;评价算法好坏的一种规则和标准。是目前的模型能做到的比较好的效果&#xff1b…...

redis集群(cluster)笔记

1. 定义&#xff1a; 由于数据量过大&#xff0c;单个Master复制集难以承担&#xff0c;因此需要对多个复制集进行集群&#xff0c;形成水平扩展每个复制集只负责存储整个数据集的一部分&#xff0c;这就是Redis的集群&#xff0c;其作用是提供在多个Redis节点间共享数据的程序…...

css 元素前后添加图标(::before 和 ::after 的妙用)

<template><div class"container"><div class"label">猜你喜欢</div></div> </template><style lang"scss" scoped> .label {display: flex;&::before,&::after {content: "";widt…...

C++ 设计模式 Forward Declaration Pimpl

放几轮跟 chatgpt 的对话&#xff0c;很精彩的回答 You 我有个问题&#xff0c;我的 main 目标依赖 src/gcp_subscriber.h 的 GCPSubscriber class 这个 class 有个 private 成员 google::cloud::pubsub::Subscriber 也就意味着我得在 gcp_subscriber.h 里面引用 google clou…...

【uniapp】小程序开发8:滚动组件scroll-view

我们经常需要做页面中部分内容可以滚动的功能&#xff0c;例如“猜你喜欢”&#xff0c;内容太多&#xff0c;通常都会超出屏幕&#xff0c;那么此块区域应该可以滚动&#xff0c;但是顶部的自定义导航栏应该不能随着滚动。 这个时候&#xff0c;就可以使用uniapp提供的滚动组件…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...