mongodb 学习

安装

两种方式

  • 直接下载压缩包解压安装,下载地址:https://www.mongodb.com/download-center/community

解压压缩包

执行命令:sudo mv mongodb-osx-x86_64-4.0.9 /usr/local/mongodb-4.0.9

配置~/.bash_profile 添加export PATH=/usr/local/mongodb-4.0.9/bin:$PATH

如使用zsh,则在~/.zshrc 添加 export PATH=/usr/local/mongodb-4.0.9/bin:$PATH

  • 使用brew 一键安装 brew install mongo (略)

  • docker 方式安装 docker pull mongo:4.2.0-rc2-bionic

启动

提前创建mongodb 数据文件夹

sudo mkdir -p /data/db

启动 mongodb,默认数据库目录即为 /data/db

启动:sudo mongod

使用

执行命令:mongo

登入客户端

use YOURDB

数据库不存在,则创建,若存在则切换

db.createCollection("YOUR_COLLECTION")

创建集合

模糊查询

find({"name":{"$regex":"武汉九通","$options":"i"}}).limit(10)

上述查询,正则查询名称叫"武汉九通"的所有记录,options=i 表示不区分大小写

option的值包含:

  • i(不区分大小写),
  • m(当使用^与$符号模糊匹配时,作用于屏蔽中间的换行符) ,
  • x(忽略注释,以#开头 /n结尾),
  • s(允许所有字符包括换行符参与模糊匹配)

按条件分页查询

find({"source":"apoi","cityCode":"0571"}).limit(120)

按条件查询统计

find({"source":"apoi","cityCode":"0571"}).count()

账户操作&授权

1. 创建超级用户

先创建一个有grant权限的用户,如root权限的用户:

img

user:用户名

pwd:密码

db:指定该用户的数据库,admin是用于权限控制的数据库,如果没有需要新建一个

roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。role里的角色可以选:

Built-In Roles(内置角色):

\1. 数据库用户角色:read、readWrite;

\2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;

\3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

\4. 备份恢复角色:backup、restore;

\5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

\6. 超级用户角色:root

// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)

\7. 内部角色:__system

具体角色的功能:

Read:允许用户读取指定数据库

readWrite:允许用户读写指定数据库

dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户

clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。

readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限

readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限

userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。

root:只在admin数据库中可用。超级账号,超级权限

2. 创建所有数据库管理用户

db.createUser({ user: "useradmin", pwd: "adminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

3. 创建单个数据库用户

img