MongoDB在Window上的部署和.net core调用

MongoDB在Window上的部署和.net core调用

MongoDB安装

安装说明:https://www.cnblogs.com/daisy-fung1314/p/soft-install-note3.html

MongoDB官网:https://www.mongodb.com/try/download/community

MongoDB Shell:命令行客户端工具

MongoDB Compass:可视化客户端数据管理工具

MongoDB配置文件

进入Mongo安装目录下的Bin目录,记事本打开mongod.cfg文件修改配置

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
# 分片集群的路由需要把数据存储字段全部注释
storage:
  dbPath: C:\Program Files\MongoDB\Server\6.0\data
  journal:
    enabled: true
#  engine:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path:  C:\Program Files\MongoDB\Server\6.0\log\mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1

#processManagement:
	# mongodb使用的时区
	# timeZoneInfo: /user/share/zoneinfo
	# 是否以后台驻留进程运行(true:是,false:否)
	# fork: true
#security:是否开启权限
security:
    authorization: enabled
#operationProfiling:

#replication:副本集,同一副本集群的实例应配置成相同的名称
    #replSetName: rs0
 replication:
 	replSetName: confset #集群名称
#sharding:分片集群
	#分片集群中当前实例的角色(configsvr:配置中心实例,shardsvr:分片实例,)
sharding:
    clusterRole: configsvr #配置中心实例
    clusterRole: shardsvr #分片实例
    #路由配置,配置中心地址,有几台就配置几台
    configDB: confset/127.0.0.1:27010,127.0.0.1:27011,127.0.0.1:27012
## Enterprise-Only Options:

#auditLog:

#snmp:

MongoDB服务器端启动

进入Mongo安装目录下的Bin目录,cmd启动命令行,运行mongod命令,–dbpath可指定数据库服务器读写的物理目录。

C:\Program Files\MongoDB\Server\6.0\bin>mongod --dbpath E:\MongoDB-Learning\dbTest

基于配置文件启动MongoDB实例(通常用此方法,-f与–config等效)

C:\Program Files\MongoDB\Server\6.0\bin>mongod.exe -f D:\MongoDB\bin\shards\mongod-27021.cfg

C:\Program Files\MongoDB\Server\6.0\bin>mongod.exe --config D:\MongoDB\bin\shards\mongod-27021.cfg

MongoDB Compass

MongoDB Compass是客户端数据管理工具,必须在服务器启动状态下才能连接

MongoDB开启权限

参考:https://blog.csdn.net/u013066244/article/details/53874216

创建一个用户管理帐户,此账户可以管理所有数据库的用户

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)
#结果
Successfully added user: {
    "user" : "admin",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

进入Mongo安装目录下的Bin目录,记事本打开mongod.cfg文件修改权限配置

security:
    authorization: enabled

创建一个Root账户

use admin
db.createUser(
  {
    user: "root",
    pwd: "root",
    roles: [ { role: "root", db: "admin" } ]
  }
);

MongoDB中的角色

内建的角色
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色:__system
角色说明:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限

dotnet core连接MongoDB

安装Nuget包

安装Nuget包 MongoDB.Driver,会自动安装依赖项MongoDB.Driver.Core

连接MongoDB服务器

private readonly IMongoCollection _products;
public ProductService(/*IConfiguration configuration*/IOptions options)
{
     var ProductMongoDBOptions = options.Value;
     //var client = new MongoClient("mongodb://localhost:27017");//直接连接
     //var client = new MongoClient(configuration.GetSection("ProductMongoDBOptions").GetValue("ConnectionString")); //通过IConfiguration配置文件连接
     var client = new MongoClient(ProductMongoDBOptions.ConnectionString); //获取MongoDB客户端连接对象,通过IOption对象连接
     var database = client.GetDatabase("ProductDb"); //获取数据库对象
     _products = database.GetCollection("Product"); //获取集合对象
}

appsetting.json配置文件

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "ProductMongoDBOptions": {
    "ProductCollectionName": "Product",
    "ConnectionString": "mongodb://localhost:27017,localhost:27018,localhost:27019",//复制集配置
    "DatabaseName": "ProductDb"
  },
  "AllowedHosts": "*"
}

Startup中注册

public void ConfigureServices(IServiceCollection services)
{
      services.AddControllers();
      services.AddScoped();
      services.Configure(Configuration.GetSection(nameof(ProductMongoDBOptions)));//将配置文件中的某个字段注入到IOC容器中,在IOC中保存一个配置对象,使用时通过IOptions options注入到类中。
      services.AddSwaggerGen(c =>
      {
           c.SwaggerDoc("v1", new OpenApiInfo { Title = "MongoDbTest", Version = "v1" });
      });
}

MongoDB副本集

初始化副本集的Primary节点

1.客户端连接MongoDB实例:mongo.exe --host 127.0.0.1 --port 27010

2.初始化Primary节点:rs.initiate()

3.添加Secondary节点:rs.add(“127.0.0.1:27011”)

MongoDB分片集群

MongoDB在Window上的部署和.net core调用_第1张图片
1.启动Shard(见MongoDB服务器端启动)

2.启动ConfigServer(见MongoDB服务器端启动,初始化副本集)

3.启动Router(见MongoDB服务器端启动)

3.1 将分片依次配置到路由:sh.addShard(“127.0.0.1:27021”)

3.2 查看集群状态: sh.status()

4.配置分片键(Field的Index升序,降序,Hash)

4.1创建索引

4.2 根据索引设置分片键:

sh.enableSharding(“productdb”)

sh.shardCollection(“productdb.Product”,{“ProductTitle”:1}) //1,-1,hashed

你可能感兴趣的:(数据库,mongodb,.netcore,数据库)