mongod.conf 配置
// /usr/local/etc/mongod.conf
# systemLog Options
systemLog:
destination: file
path: "/usr/local/var/log/mongodb/mongod.log"
logAppend: true
quiet: true
# storage Options
storage:
#dbPath: "/Users/aizawasayo/data/db"
dbPath: "/usr/local/var/mongodb"
journal:
enabled: true
# processManagement Options
processManagement:
fork: true
# net Options
net:
bindIp: 127.0.0.1
port: 27017
# security Options
security:
authorization: enabled
# setParameter Option
setParameter:
enableLocalhostAuthBypass: false
-
启动服务
mongod --config /usr/local/etc/mongod.conf
或
mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork --auth --port 27016
(如果mongodb用的不是默认端口才加--port xxxxx
) -
查看mongodb是否在运行
ps aux | grep -v grep | grep mongod
-
进入mongo shell
mongo
mongodb指定了其他端口则:
mongo --port 27016
(当然这个比较方便)
mongo ip:port
eg.mongo 103.24.168.208:27016
-
查看数据库
show dbs
-
切换admin数据库
use admin
创建管理员账户必须要到admin数据库 -
创建超级管理员账户
db.createUser({user:'root',pwd:'root',roles:['root']})
超级用户不受访问限制
db.createUser()
中的参数为一个对象,属性分别表示账号名、密码、角色(一个账号可以有多个角色)
roles 用户角色:
- 数据库用户角色:read、readWrite;
- 数据库管理角色:dbAdmin、dbOwner、userAdmin;
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
- 备份恢复角色:backup、restore;
- 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户角色:root
-
切换到blog数据
use blog
-
创建普通账号
db.createUser({user:'aizawasayo',pwd:'123456',roles:['readWrite']})
-
修改用户密码
use admin
db.changeUserPassword("username", "xxx")
-
查看用户信息
db.runCommand({usersInfo:"userName"})
-
修改密码和用户信息
db.runCommand( { updateUser:"username", pwd:"xxx",...})
-
停止mongodb服务
use admin
db.auth('username','pwd')
身份验证
db.shutdownServer()
关闭服务进程 -
更改集合的某个字段名
db.getCollection('集合名').update({}, {$rename : {"被更改的字段" : "新字段名"} },{ multi:true })
或
db.集合名.updateMany({}, {$rename : {"被更改的字段" : "新字段名"} })
举例:
db.getCollection('boards').updateMany({}, {$rename : {'updated' : 'updated_time'}})
注:
db.getCollection
和db.<collectionName>
是等效的,可按需使用。例如集合名由_
开头,db.getCollection
就更适用。
-
复制一个集合的数据到另一个集合
db.被复制的集合名.find().forEach(function (x){ db.复制到哪个集合名.insert(x) })
指定复制哪些字段
db.被复制的集合名.find().forEach(function (x){ db.复制到哪个集合名.insert({ name: x.name, type: x.type }) })
-
清空集合数据
db.集合名.remove({})
-
批量删除集合中的某个字段
- 方法一:
db.集合名.updateMany({},{$unset:{updated_time:null}})
- 方法二:Bulk批量操作构造器:https://docs.mongodb.com/manual/reference/method/Bulk.find.update/#Bulk.find.update
var bulk = db.集合名.initializeUnorderedBulkOp()
bulk.find({}).update( { $unset: { updated_time:null } } )
bulk.execute()
-
删除集合中多余的主键
先查看集合所有主键:db.users.getIndexes()
可以看到包含该集合所有主键的数组
再删除不再使用的即可:db.users.dropIndex({email:1})
-
删除集合
db.集合名.drop()
-
删除数据库
use animal
(切换到需要删除的数据库)
db.dropDatabase()
网友评论