docker 安装mongodb:docker pull mongo
运行容器

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的更多相关文章

  1. 基于netcore实现mongodb和ElasticSearch之间的数据实时同步的工具(Mongo2Es)

    基于netcore实现mongodb和ElasticSearch之间的数据实时同步的工具 支持一对一,一对多,多对一和多对多的数据传输方式. 一对一 - 一个mongodb的collection对应一 ...

  2. MongoDB入门及 c# .netcore客户端MongoDB.Driver使用

    MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系 ...

  3. .NetCore操作MongDB简要代码实现

    .NetCore操作MongoDB简要代码实现 在接触过的大多数使用mongodb的情景中,基本上都是用mongodb来存储日志的. mongodb是作为一种文档型的数据库,在管理日志文档上确实比较适 ...

  4. Docker--部署mongodb+.netcore+nginx

    前言 公司租用的阿里云的服务器,每年会更换一次,很麻烦,还容易出问题,想会不会有更方便的方式来迁移服务器,就这样接触到了docker. 参考网上的一些资料,自己琢磨了一段时间,记录下docker的部署 ...

  5. .netcore mongodb 分页+模糊查询+多条件查询

    .netcore MongoDB.Driver 版本才2.8 与aspnet差距太大,网上找很多资料没有现成的代码. public override async Task<PagerList&l ...

  6. MongoDB netcore

    mongodb.driver mongodb.driver.core url:  http://dl.mongodb.org/dl/win32/x86_64 ********************* ...

  7. Linux~centos上安装.netcore,HelloWorld归来!

    对于跨平台的.netCore来说,让它的程序运行在Linux系统上已经成为必然,也是一种趋势,毕竟我们的很多服务都放在linux服务器上(redis,mongodb,myql,fastDFS,luce ...

  8. .NetCore~Json代替了Xml

    回到目录 在进行.netCore时代后,最大的变化就是对Json的使用更加主动,基本代替了之前的XML,像一些用户配置,系统配置,包包配置等都是基于json的,而web.config这个文件基本变成一 ...

  9. 物联网框架ServerSuperIO在.NetCore实现跨平台的实践路线

    正所谓天下大势,不跟风不行.你不跨平台,很low嘛.java说:你们能跨嘛,跨给我看看.C#说:不要强人所难嘛.java说:能部署在云上吗?docker?微服务?C#说:不要强人所难嘛.java说:你 ...

  10. 一个能够在Asp.Net和Asp.NetCore之间能够互相通讯的Rpc

    一.特性 1.跨平台 2.提供负载均衡算法 3.支持ZK服务协调 4.提供了JSON.BinarySerializer.还有自定义的序列化方式 5.客户端提供Socket连接池,以便于快速交互,防止类 ...

随机推荐

  1. Ubuntu22.04双网卡调试

    最近捡起正点原子的linux开发板,又开始了linux的学习,这条路走走停停的,隔了一年时间很多积累的东西都忘了.打开VMware虚拟机发现网络也连接不上了,我的印象中去年是把虚拟机的双网卡配置好了, ...

  2. Django实战项目-学习任务系统-用户注册

    接着上期代码框架,开发第2个功能,用户注册,在原有用户模型基础上,增加一个学生用户属性表,用来关联学生用户的各种属性值,这个属性表是参考网络小说里系统属性值设计的,方便直观了解用户的能力高低,等级以及 ...

  3. Win32控制台获取可执行程序的快捷方式的目标位置、起始位置、快捷键、备注等

    Win32控制台获取可执行程序的快捷方式的目标位置.起始位置.快捷键.备注等,示例如下图: #include <iostream> #include <atlstr.h> #i ...

  4. directory 用于数据泵 导入、导出创建的目录。

    1.查询directory目录 select * from dba_directories; 2.创建或者修改 directory目录 create or replace directory 目录名称 ...

  5. 冒泡排序--java进阶day06

    1.冒泡排序 https://kdocs.cn/l/ciMkwngvaWfz?linkname=150996835 我们会发现上图排序的样子非常像之前打印的倒三角,所以,冒泡排序也需要使用循环嵌套 2 ...

  6. 【JUC】基础总结

    多线程的思考:为什么需要run()和start()方法,只用其中一个不行吗? run()和start() run()是运行的时候就直接执行所有代码 start()相当于开启线程,并发执行,让这些线程开 ...

  7. 【C语言】gcc编译时报错 fatal error: stdio.h: 没有那个文件或目录

    零.问题 在Ubuntu20.04.6中使用GCC编译一个HelloWorld代码时遇到如下问题: 首先确认了,自己单词没有拼写错. 然后再检查GCC的版本,确实没问题: 我用的是Ubuntu20.0 ...

  8. 【Python】文件批量重命名

    需求: 经常有很多相似的文件需要重命名,如果一个一个来太麻烦了,正好会Python,所以用Python写了个脚本,把符合要求的文件的文件名修改为新的. 代码: # coding:utf-8 # @Ti ...

  9. 阿里云ECS下安装的MySQL无法远程连接?

    场景重现 在阿里云ECS下, Ubuntu系统上通过以下命令安装的MySQL数据库, 本地连接正常, 但远程死活连接不上. # 安装MySQL apt-get install mysql-server ...

  10. 学习unigui【17】-数据集和JSON互相转换-DataSetConverter4D 开源项目

    学习unigui过程中,出现使用json和fdquery等数据交换的太多场景要求. 感谢开源DataSetConverter4D提供轮子. 直接抄demo: {Convert DataSet to J ...