1.安装
https://www.mongodb.com/download-center#community
注意:
安装 "install mongoDB compass" 不勾选
下载安装,下载地址:https://www.mongodb.com/download-center/compass
安装服务:
mongod --bind_ip 0.0.0.0 --logpath 日志文件 --logappend --dbpath 数据库存储目录 --port 27017 --serviceName "Mongodb" --install
如:
mongod --bind_ip 0.0.0.0 --logpath E:MongoDBmglogmongo.log --logappend --dbpath E:MongoDBmgdata --port 27017 --serviceName "Mongodb" --install
启动MongoDB服务: net start MongoDB
关闭MongoDB服务: net stop MongoDB
移除 MongoDB 服务:mongod.exe --remove
2.基本用法
1.创建数据库
use cachedb
db.test.insert({'name':'小花'});
这样就创建了一个数据库,如果什么都不操作离开的话,这个库就会被系统删除.所以我们还要执行下面的命令:
然后使用命令查看是否有保存cachedb这个数据库:
show dbs
2.配置用户
use CacheData
db.createUser(
{
user:"dbman",
pwd:"12345678",
roles:[{role:"dbAdmin",db:"CacheData"}]
}
)
查看用户是否创建成功:show users
数据库角色说明:
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
修改密码
方法1:db.changeUserPassword("dbman","changepass");
方法2:db.updateUser("dbman",{pwd:"changepass1"});
删除用户:db.dropUser("dbman")
修改权限
db.updateUser("usertest",{roles:[ {role:"read",db:"testDB"} ]})
注:updateuser它是完全替换之前的值,如果要新增或添加roles而不是代替它
则使用方法: db.grantRolesToUser() 和 db.revokeRolesFromUser()
------------------------------------------------------------------------------------------
db.grantRolesToUser("usertest", [{role:"readWrite", db:"testDB"},{role:"read", db:"testDB"}]) # 修改权限
db.revokeRolesFromUser("usertest",[{role:"read", db:"testDB"}]) # 删除权限:
3.使用客户端连接
我使用的是 Robo 3T
4.
--备份
mongodump -h 127.0.0.1:27017 -d CacheData -o E:MongoDBak
mongodump 备份全部
--恢复:
mongorestore -h 127.0.0.1:27017 -d CacheData --dir E:MongoDBmgbakCacheData
mongorestore 恢复全部
解决MongoDB 日志文件过大,清理后还占用很大磁盘空间的问题
使用如下命令:
db.runCommand({logRotate:1})
这个命令会使得mongo关闭当前日志文件
重启一个新的日志文件
需要切换到admin数据库
特别注意:启动的时候必须是--logpath指定了log路径的
---------------------------------
mongod --dbpath 数据库地址 --port 端口号 --logpath 日志地址 --fork
mongo进入数据库
use admin 切换到admin
db.createUser({ user:'root', pwd:'root', roles:[{ 'role':'root' }] }) 创建用户
ps -ef | grep mongo 查看MongoDB的pid
sudo kill pid 关闭mongo
mongod --dbpath 数据库地址 --port 端口号 --logpath 日志地址 --fork --auth (auth开启认证,端口号不要在用默认端口)
之后再次进入数据库将无法操作 提示需要认证
输入db.auth("user","pwd")完成认证即可(切入admin)
mongodump -h 192.168.1.88 --port 27017 -u root -p 123456
mongorestore -h 192.168.1.88 --port 27017 -u root -p 123456
==========================
mongodb 日志:
默认情况下,系统分析器处于关闭状态,不会进行任何记录。可以在shell中运行db.setProfilingLevel()开启分析器
db.setProfilingLevel(
level
,<slowms>) 0=
off
1=slow 2=
all
第一个参数是指定级别,不同的级别代表不同的意义,0表示关闭,1表示默认记录耗时大于100毫秒的操作,2表示记录所有操作。第二个参数则是自定义“耗时过长"标准,比如记录所有耗时操作500ms的操作
db.setProfilingLevel(0)
db.system.profile.drop()
db.createCollection( "system.profile", { capped: true, size:4000000 } )
db.setProfilingLevel(1)
查询执行时间大于200ms的Profile记录:
> db.system.profile.find( { millis : { $gt : 200 } } )
分组聚合:
db.getCollection('LiveDuration').aggregate([{"$match":{"LiveId":36495807}},{$group : {_id : "$UserCenterId", num_tutorial : {$sum : "$Second"}}},{$sort:{num_tutorial:-1}},{$limit:20}])