最近经常使用MongoDB来进行数据的操作,特此记录总结一下
角色 | 介绍 |
read | 提供读取所有非系统的集合(数据库) |
readWrite | 提供读写所有非系统的集合(数据库)和读取所有角色的所有权限 |
dbAdmin | 提供执行管理任务的功能,例如与架构相关的任务,索引编制,收集统计信息。此角色不授予用户和角色管理权限。 |
dbOwner | 提供对数据库执行任何管理操作的功能。此角色组合了readWrite,dbAdmin和userAdmin角色授予的权限。 |
userAdmin | 提供在当前数据库上创建和修改角色和用户的功能。由于userAdmin角色允许用户向任何用户(包括他们自己)授予任何权限,因此该角色还间接提供对数据库的超级用户访问权限,或者,如果作用于管理数据库,则提供对群集的访问权限。 |
clusterAdmin | 提供最佳的集群管理访问。此角色组合了clusterManager,clusterMonitor和hostManager角色授予的权限。此外,该角色还提供了dropDatabase操作。 |
readAnyDatabase | 仅在admin 数据库中使用,提供所有数据库的读权限。 |
readWriteAnyDatabase | 尽在admin 数据库中使用,提供所有数据库的读写权限 |
userAdminAnyDatabase | 尽在admin 数据库中使用,提供与userAdmin相同的用户管理操作访问权限,允许用户向任何用户(包括他们自己)授予任何权限,因此该角色还间接提供超级用户访问权限。 |
dbAdminAnyDatabase | 仅在admin 数据库中使用,提供与dbAdmin相同的数据库管理操作访问权限,该角色还在整个群集上提供listDatabases操作。 |
root | 尽在admin 数据库中使用,提供超级权限 |
- 查看所有的数据库
show dbs
- 查看当前所在的库
db
- 切换数据库
use db1
- 修改数据库名称
# 拷贝一份数据,删除旧的数据 db.copyDatabase('old_name', 'new_name'); use old_name db.dropDatabase();
-
-
-
- 数据导出
mongoexport --host 127.0.0.1 --port 8906 -d xiguadata -c zhuti -o principal.dat 说明: --host 主机地址 --port 端口号 -d 数据库名 -c 集合名 -o 导出的文件名称
mongoexport -d myDB -c user -f _id,name,password,adress --csv -o ./user.csv
--f 需要提取的field用逗号分隔
--q 指定过滤条件 '{key:"value"}'
--csv 指定导出的格式CSV
mongoexport.exe -d xiguadata -c comps2 -f wxname,wxid,zt,wxdesc,fans,regdate -q "{_id:{'$gt':ObjectId('5c0f9f09031c2304c449542d')}}" --type=csv -o component.csv
- 数据导出
-
-
- 数据导入
mongoimport -d 库名 -c 集合名 导入的文件名
常见问题:
1)使用-q 查询的时候报错
D:Program FilesMongoDBServer4.0in>mongoexport.exe -h localhost:27001 -d mldn -c emps -q '{age:{$gt:20}}' -f name,age,job,salary --type=csv > emps1.csv 2018-09-10T10:49:06.005+0800 error validating settings: query '[39 123 97 103 101 58 123 36 103 116 58 50 48 125 125 39]' is not valid JSON: json: cannot unmarshal string into Go value of type map[string]interface {} 2018-09-10T10:49:06.015+0800 try 'mongoexport --help' for more information
解决:
后来发现是window和linux的区别,linux上执行是外面包单引号,window要外面包双引号
window写错:"{'consumeStatus':'SUCCESS','externalSeqNum':/^201705/}" 就没有问题了