netcore 使用mongodb
docker run -d -p 27017:27017 --name mongo01 -v /docker/mongo/config:/data/configdb -v /docker/mongo/db:/data/db mongo
进入容器.
docker exec -it mongodb bash
创建用户
# 进入 admin 的数据库
use admin
# 创建管理员用户
db.createUser(
{
user: "admin",
pwd: "123456",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
# 创建有可读写权限的用户. 对于一个特定的数据库, 比如'demo'
db.createUser({
user: 'test',
pwd: '123456',
roles: [{role: "read", db: "demo"}]
})
新建项目Contact.Api 实现一个简易的联系人列表
nuget引用包MongoDB.Driver
添加配置文件
"ConnectionStrings": {
"ConnectionString": "mongodb://localhost:27017",
"Database": "Finbook_Contacts",
"LogCollection": "Finbook_Contacts_log"
}
添加数据库配置
/// <summary>
/// 数据库配置信息
/// </summary>
public class DBSettings
{
/// <summary>
/// mongodb connectionstring
/// </summary>
public string ConnectionString { get; set; }
/// <summary>
/// mongodb database
/// </summary>
public string Database { get; set; }
/// <summary>
/// 日志collection
/// </summary>
public string LogCollection { get; set; }
}
添加db上下文
public class ContactContext
{
private IMongoDatabase _dataBase;
private readonly string _logCollection;
public ContactContext(IOptions<DBSettings> settings)
{
var client = new MongoClient(settings.Value.ConnectionString);
if (client != null)
_dataBase = client.GetDatabase(settings.Value.Database);
_logCollection = settings.Value.LogCollection;
} private void CheckAddCreateCollection(string collectionName)
{
var collectionList = _dataBase.ListCollections().ToList();
var collectionNames = new List<string>();
//获得所有集合的名称
collectionList.ForEach(x => { collectionNames.Add(x["name"].AsString); });
//如果没有这个集合就创建一个 (相当于创建一个表)
if (!collectionNames.Contains(collectionName))
{
_dataBase.CreateCollection(collectionName);
}
} public IMongoCollection<LogEventData> LogEventDatas
{
get
{
CheckAddCreateCollection(_logCollection);
return _dataBase.GetCollection<LogEventData>(_logCollection);
}
}
public IMongoCollection<ContactBook> ContactBooks
{
get
{
CheckAddCreateCollection("ContactBooks");
return _dataBase.GetCollection<ContactBook>("ContactBooks");
}
}
public IMongoCollection<T> GetCollection<T>(string name) where T : class
{
CheckAddCreateCollection(name);
return _dataBase.GetCollection<T>(name);
}
public IMongoCollection<ContactApplyRequest>ContactApplyRequests
{
get
{
CheckAddCreateCollection("ContactApplyRequests");
return _dataBase.GetCollection<ContactApplyRequest>("ContactApplyRequests");
}
}
}
netcore 使用mongodb的更多相关文章
- 基于netcore实现mongodb和ElasticSearch之间的数据实时同步的工具(Mongo2Es)
基于netcore实现mongodb和ElasticSearch之间的数据实时同步的工具 支持一对一,一对多,多对一和多对多的数据传输方式. 一对一 - 一个mongodb的collection对应一 ...
- MongoDB入门及 c# .netcore客户端MongoDB.Driver使用
MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系 ...
- .NetCore操作MongDB简要代码实现
.NetCore操作MongoDB简要代码实现 在接触过的大多数使用mongodb的情景中,基本上都是用mongodb来存储日志的. mongodb是作为一种文档型的数据库,在管理日志文档上确实比较适 ...
- Docker--部署mongodb+.netcore+nginx
前言 公司租用的阿里云的服务器,每年会更换一次,很麻烦,还容易出问题,想会不会有更方便的方式来迁移服务器,就这样接触到了docker. 参考网上的一些资料,自己琢磨了一段时间,记录下docker的部署 ...
- .netcore mongodb 分页+模糊查询+多条件查询
.netcore MongoDB.Driver 版本才2.8 与aspnet差距太大,网上找很多资料没有现成的代码. public override async Task<PagerList&l ...
- MongoDB netcore
mongodb.driver mongodb.driver.core url: http://dl.mongodb.org/dl/win32/x86_64 ********************* ...
- Linux~centos上安装.netcore,HelloWorld归来!
对于跨平台的.netCore来说,让它的程序运行在Linux系统上已经成为必然,也是一种趋势,毕竟我们的很多服务都放在linux服务器上(redis,mongodb,myql,fastDFS,luce ...
- .NetCore~Json代替了Xml
回到目录 在进行.netCore时代后,最大的变化就是对Json的使用更加主动,基本代替了之前的XML,像一些用户配置,系统配置,包包配置等都是基于json的,而web.config这个文件基本变成一 ...
- 物联网框架ServerSuperIO在.NetCore实现跨平台的实践路线
正所谓天下大势,不跟风不行.你不跨平台,很low嘛.java说:你们能跨嘛,跨给我看看.C#说:不要强人所难嘛.java说:能部署在云上吗?docker?微服务?C#说:不要强人所难嘛.java说:你 ...
- 一个能够在Asp.Net和Asp.NetCore之间能够互相通讯的Rpc
一.特性 1.跨平台 2.提供负载均衡算法 3.支持ZK服务协调 4.提供了JSON.BinarySerializer.还有自定义的序列化方式 5.客户端提供Socket连接池,以便于快速交互,防止类 ...
随机推荐
- Ubuntu22.04双网卡调试
最近捡起正点原子的linux开发板,又开始了linux的学习,这条路走走停停的,隔了一年时间很多积累的东西都忘了.打开VMware虚拟机发现网络也连接不上了,我的印象中去年是把虚拟机的双网卡配置好了, ...
- Django实战项目-学习任务系统-用户注册
接着上期代码框架,开发第2个功能,用户注册,在原有用户模型基础上,增加一个学生用户属性表,用来关联学生用户的各种属性值,这个属性表是参考网络小说里系统属性值设计的,方便直观了解用户的能力高低,等级以及 ...
- Win32控制台获取可执行程序的快捷方式的目标位置、起始位置、快捷键、备注等
Win32控制台获取可执行程序的快捷方式的目标位置.起始位置.快捷键.备注等,示例如下图: #include <iostream> #include <atlstr.h> #i ...
- directory 用于数据泵 导入、导出创建的目录。
1.查询directory目录 select * from dba_directories; 2.创建或者修改 directory目录 create or replace directory 目录名称 ...
- 冒泡排序--java进阶day06
1.冒泡排序 https://kdocs.cn/l/ciMkwngvaWfz?linkname=150996835 我们会发现上图排序的样子非常像之前打印的倒三角,所以,冒泡排序也需要使用循环嵌套 2 ...
- 【JUC】基础总结
多线程的思考:为什么需要run()和start()方法,只用其中一个不行吗? run()和start() run()是运行的时候就直接执行所有代码 start()相当于开启线程,并发执行,让这些线程开 ...
- 【C语言】gcc编译时报错 fatal error: stdio.h: 没有那个文件或目录
零.问题 在Ubuntu20.04.6中使用GCC编译一个HelloWorld代码时遇到如下问题: 首先确认了,自己单词没有拼写错. 然后再检查GCC的版本,确实没问题: 我用的是Ubuntu20.0 ...
- 【Python】文件批量重命名
需求: 经常有很多相似的文件需要重命名,如果一个一个来太麻烦了,正好会Python,所以用Python写了个脚本,把符合要求的文件的文件名修改为新的. 代码: # coding:utf-8 # @Ti ...
- 阿里云ECS下安装的MySQL无法远程连接?
场景重现 在阿里云ECS下, Ubuntu系统上通过以下命令安装的MySQL数据库, 本地连接正常, 但远程死活连接不上. # 安装MySQL apt-get install mysql-server ...
- 学习unigui【17】-数据集和JSON互相转换-DataSetConverter4D 开源项目
学习unigui过程中,出现使用json和fdquery等数据交换的太多场景要求. 感谢开源DataSetConverter4D提供轮子. 直接抄demo: {Convert DataSet to J ...