0
点赞
收藏
分享

微信扫一扫

MongoDB之常用操作

MongoDB之常用操作_nosql

  最近经常使用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 数据库中使用,提供超级权限

 

  1. 查看所有的数据库

show dbs

  1. 查看当前所在的库

db

  1. 切换数据库

use db1

  1. 修改数据库名称

# 拷贝一份数据,删除旧的数据
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 Files\MongoDB\Server\4.0\bin>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/}" 就没有问题了

 

举报

相关推荐

0 条评论