ASP.NET Core3.1 中使用MongoDB基本操作
1、安装驱动包
install-package MongoDB.Driver -version 2.11.7
2、配置文件帮助类 ConfigHelper
public static class ConfigHelper
{
private static IConfiguration _configuration; static ConfigHelper()
{
//在当前目录或者根目录中寻找appsettings.json文件
string fileName = "appsettings.json"; string directory = AppContext.BaseDirectory;
directory = directory.Replace("\\", "/"); string filePath = $"{directory}/{fileName}";
if (!File.Exists(filePath))
{
var length = directory.IndexOf("/bin");
filePath = $"{directory.Substring(0, length)}/{fileName}";
} var builder = new ConfigurationBuilder().AddJsonFile(filePath, false, true);
_configuration = builder.Build(); } public static string GetSectionValue(string key)
{
return _configuration.GetSection(key).Value;
} }
3、appsettings.json配置
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"MongoDBAddress": "mongodb://192.168.0.161:27017", //连接字符串
"MongoDBName": "local" //集合名
}
4、实体类
/// <summary>
/// 公共实体类
/// </summary>
public class BaseModel
{
[BsonId] //标记主键
[BsonRepresentation(BsonType.ObjectId)] //参数类型 , 无需赋值
public string Id { get; set; } [BsonElement(nameof(CreateDateTime))] //指明数据库中字段名为CreateDateTime
public DateTime CreateDateTime { get; set; } //[BsonElement(nameof(IsDelete))]
public bool IsDelete { get; set; } public BaseModel()
{
CreateDateTime = DateTime.Now;
IsDelete = false;
}
}
namespace MongodbDemo.Models
{
public class Student : BaseModel
{
public string Name { get; set; }
public int Age { get; set; }
List<Course> _courses = new List<Course>();
public virtual List<Course> Courses { get { return _courses; } set { _courses = value; } }
}
public class Course
{
public string StudentId { get; set; }
public string Name { get; set; }
}
}
5、业务基础类
namespace MongodbDemo.Services
{
/// <summary>
/// 业务基础类
/// </summary>
/// <typeparam name="T"></typeparam>
public class BaseMongoDbService<T> where T : BaseModel
{
protected readonly IMongoCollection<T> _collection; //数据表操作对象 /// <summary>
/// 构造函数
/// </summary>
/// <param name="config"></param>
/// <param name="tableName">表名</param>
public BaseMongoDbService(string tableName)
{
var client = new MongoClient(ConfigHelper.GetSectionValue("MongoDBAddress")); //获取链接字符串
var database = client.GetDatabase(ConfigHelper.GetSectionValue("MongoDBName")); //数据库名 (不存在自动创建)
_collection = database.GetCollection<T>(tableName); // (不存在自动创建)
} //Find<T> – 返回集合中与提供的搜索条件匹配的所有文档。
//InsertOne – 插入提供的对象作为集合中的新文档。
//ReplaceOne – 将与提供的搜索条件匹配的单个文档替换为提供的对象。
//DeleteOne – 删除与提供的搜索条件匹配的单个文档。 /// <summary>
/// 获取所有
/// </summary>
/// <returns></returns>
public List<T> Get()
{
return _collection.Find(T => true).ToList();
} /// <summary>
/// 获取单个
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public T Get(string id)
{
return _collection.Find<T>(T => T.Id == id).FirstOrDefault();
} /// <summary>
/// 添加
/// </summary>
/// <param name="T"></param>
/// <returns></returns>
public T Add(T T)
{
_collection.InsertOne(T);
return T;
} /// <summary>
/// 更新
/// </summary>
/// <param name="id"></param>
/// <param name="TIn"></param>
public void Update(string id, T TIn)
{
_collection.ReplaceOne(T => T.Id == id, TIn);
} /// <summary>
/// 根据id删除
/// </summary>
/// <param name="id"></param>
public void Remove(string id)
{
_collection.DeleteOne(T => T.Id == id);
}
}
}
6、调用方式
StudentService _studentService = new StudentService();
public void Test()
{ Student _students = new Student();
_students.Name = "张三";
_students.Age = 10;
Course _course = new Course();
_course.StudentId = _students.Id;
_course.Name = "数学";
_students.Courses.Add(_course);
_studentService.Add(_students);
}
ASP.NET Core3.1 中使用MongoDB基本操作的更多相关文章
- Asp.Net Core3.x中使用Cookie
在Asp.Net中使用Cookie相对容易使用,Request和Response对象都提供了Cookies集合,要记住是从Response中存储,从Request中读取相应的cookie.Asp.Ne ...
- ASP.NET Core3.0 中的运行时编译
运行时编译 通过 Razor 文件的运行时编译补充生成时编译. 当 .cshtml 文件的内容发生更改时,ASP.NET Core MVC 将重新编译 Razor 文件 . 通过 Razor 文件的运 ...
- 探索Asp net core3中的 项目文件、Program.cs和通用host(译)
引言 原文地址 在这篇博客中我将探索一些关于Asp.net core 3.0应用的基础功能--.csproj 项目文件和Program源文件.我将会描述他们从asp.net core 2.X在默认模版 ...
- 在.NET Core中使用MongoDB明细教程(1):驱动基础及文档插入
MongoDB,被归类为NoSQL数据库,是一个以类JSON格式存储数据的面向文档的数据库系统.MongoDB在底层以名为bson的二进制编码格式表示JSON文档,MongoDB bson实现是轻量级 ...
- 在.NET Core中使用MongoDB明细教程(2):使用Filter语句检索文档
在上篇文章我们介绍了一些驱动程序相关的基础知识,以及如何将文档插入到集合中.在这篇文章中,我们将学习如何从数据库中检索文档. 作者:依乐祝 译文地址:https://www.cnblogs.com/y ...
- mongodb基本操作及存储图片显示方案
先介绍下mongodb的基本操作及使用 第一部:开启安全性验证 如果需要给MongoDB数据库使用安全验证,则需要用--auth开启安全性检查,则只有数据库认证的用户才能执行读写操作,开户安全性检查, ...
- MongoDB 基本操作和聚合操作
一 . MongoDB 基本操作 基本操作可以简单分为查询.插入.更新.删除. 1 文档查询 作用 MySQL SQL MongoDB 所有记录 SELECT * FROM users; db ...
- 在MVC程序中使用MongoDB数据库
.net项目中混搭数据库 安装和部署 C#中使用MongoDB MongoDb与关系型数据库区别 开机自启动 关系型数据库和非关系型数据口可以混搭 MongoDB是一个高性能,开源,无模式的,基于分布 ...
- 【MongoDB详细使用教程】二、MongoDB基本操作
目录 数据类型 数据库操作 集合操作 数据操作 增 查 改 修改整行 修改指定字段的值 删 数据类型 MongoDB常见类型 说明 Object ID 文档ID String 字符串,最常用,必须是有 ...
- 采用最简单的方式在ASP.NET Core应用中实现认证、登录和注销
在安全领域,认证和授权是两个重要的主题.认证是安全体系的第一道屏障,是守护整个应用或者服务的第一道大门.当访问者请求进入的时候,认证体系通过验证对方的提供凭证确定其真实身份.认证体系只有在证实了访问者 ...
随机推荐
- JMeter压力测试之环境搭建、脚本调试及报错解决方法(Linux版)
一.环境部署 后续往服务器上传文件,本文中使用的是xftp,因其不是本文所要讲述的重点,这里不做详解. 第一步:安装所需要版本的JDK,本次使用的是JDK 1.8 下载地址:http://www.or ...
- Minio客户端工具mc
简介:mc(Minio Client)是Minio提供访问和操作服务端的客户端工具,有Windows和Linux两个平台版本. 一.安装(基于Linux) 1. mc下载:wget https://d ...
- 发誓要学会wepack
9.9 学习资料: http://webpack.wuhaolin.cn/ <深入浅出Webpack> https://github.com/zshno1/wepack-study w ...
- git连接不上,使用git镜像
github有一个镜像网站:把github替换为kgithub
- Java脚本操作mysql和接口
一.Java操作MySQL 1.插入insert 1 import java.sql.*; 2 import java.util.UUID; 3 4 public class BigData { 5 ...
- 日志分析查看—— cat+grep+awk+uniq+sort+wc+join
有个统计日志信息的需求,下面是使用到的命令 //按 \t 对文件每一行进行切割,正则匹配第二列为32896时,输出第一列:再进行排序并去重,最后统计行数 cat file.log|awk -F '\t ...
- ubuntu下ntp时间同步
1. 首先安装ntp服务(ubuntu 16.02)在linux的root用户下执行以下命 sudo apt-get install ntp (如果不是ubuntu系统则执行 yum insta ...
- centos/rockylinux/proxmoxve重置root密码 以及 在#bash 下 重启
在 gurb 模式下,按[e]进入编辑页面 在 第3段 的末尾处添加以下代码,然后[Ctrl+X]即当前配置启动 init=/bin/bash 挂载,并使用命令重置密码 挂载 / mount -rw ...
- fsck.fat 检查修复(MS-DOS)fat类型文件系统
使用方式 fsck.fat [option] DEVICE 例如 fsck.fat -aw /dev/usba0 fsck.fat 检查fat文件系统的一致性,并选择性的尝试修复他们. 如下文件系统问 ...
- paddle 错误(ValueError: all input arrays must have the same shape)
参考:voc数据集执行eval.py命令报错 · Issue #3456 · PaddlePaddle/PaddleDetection (github.com) 配置文件加这两行: EvalReade ...