一、权限
新建
use store
为store新建writer用户,并授读写权限
db.createUser({user: "writer", pwd: "123456", roles: [{role: "readWriter", db: "store"}]})
用户已经存在,为这个用户再添加数据库授权
db.updateUser("writer", {role: "readWriter", db: "store1"})
二、备份 与 恢复
备份
业务场景:日志数据库,用来查询bug的日志,仅仅是以今天为中心的一段时间,我们将不在改时间段的日志备份一下,存在硬盘上
语法:
mongodump -h 主机ip --port 端口 -u 用户名 -p 密码 --archive=备份后的名称.archive --db 数据库名称 --collection 表名称
gzip 备份后的名称.archive
示例:
下面的语句实现了将 store数据库下的classic_trip_offline_20180605表备份到硬盘上名称为classic_trip_offline_20180605.archive
mongodump -h 10.10.233.131 --port 27017 -u writer -p admin123456 --archive=classic_trip_offline_20180605.archive --db store --collection classic_trip_offline_20180605
gzip classic_trip_offline_20180605.archive
恢复
语法
mongorestore -h 服务器地址 --port 端口 -u 用户 -p 密码 --gzip --archive=被压缩后的文件名 --db 要恢复到的数据库名称 --collection=要恢复的表名字(注意,只会恢复到原表中)
示例
将备份文件中的表恢复到指定数据库中
mongorestore -h 10.19.114.19 --port 27017 -u writer -p admin123456 --gzip --archive=classic_trip_offline_20180605.archive.gz --db store --collection=classic_trip_offline_20180605(写其他名字也是恢复到跟原来一个表名中)
三、从一个表中复制数据到另一个表
语法:
use 源数据库
var docs = db.源表名字.find();
use 目标数据库 (当数据库不同时)
docs.forEach(function(d){db.目标表名.insert(d)});
示例:
将 store数据库classic_trip_offline_bak表中的数据 插入到了 classic_trip_offline_bak1表中
相同数据库,无须使用use
use store
var docs = db.classic_trip_offline_bak.find();
//use xxxx (当数据库不同时)
docs.forEach(function(d){db.classic_trip_offline_bak1.insert(d)});