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权限的用户:

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. 创建单个数据库用户
