安装说明:https://www.cnblogs.com/daisy-fung1314/p/soft-install-note3.html
MongoDB官网:https://www.mongodb.com/try/download/community
MongoDB Shell:命令行客户端工具
MongoDB Compass:可视化客户端数据管理工具
进入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:
进入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是客户端数据管理工具,必须在服务器启动状态下才能连接
参考: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" } ]
}
);
内建的角色
数据库用户角色: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数据库中可用。超级账号,超级权限
安装Nuget包 MongoDB.Driver,会自动安装依赖项MongoDB.Driver.Core
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" });
});
}
1.客户端连接MongoDB实例:mongo.exe --host 127.0.0.1 --port 27010
2.初始化Primary节点:rs.initiate()
3.添加Secondary节点:rs.add(“127.0.0.1:27011”)
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