安装
官网下载:https://www.mongodb.com/try/download/community
参考资料:https://www.runoob.com/mongodb/mongodb-window-install.html
- 配置环境变量
- 安装目录根目录创建data/db文件夹
3.终端检查命令
输入mongod 启动服务器
输入mongo连接数据库
db.version() 查看版本号
基础命令
- 启动
一个cmd窗口输入mongod启动服务器,一个cmd窗口输入mongo连接数据库。
show dbs 查看数据库
use xxx 进入数据库
show collections 查看数据库中的所有集合
db 查看目前在哪个库中
- 创建数据库 增删改查
- 删除集合与数据库
- 批量插入
- 修改
- findAndModify
db.runCommand():它是数据库运行命令的执行器,执行命令首选就要使用它,因为它在Shell和驱动程序间提供了一致的接口。
findAndModify属性值:
query:需要查询的条件/文档
sort: 进行排序
remove:boolean,
new: boolean返回更新前的文档还是更新后的文档。
fields:可指定需要返回的字段
upsert:没有这个值是否增加。
查询条件
简单查找
- db.user.find({"id":"2"})
筛选字段
- db.user.find({"id":"2"},{name:true,"id":1,'_id':0})
不等修饰符
日期查找
多条件查询
find数组查询
find参数
- function(query, fields, limit, skip, batchSize, options)
query:查询条件
fields:(返回内容)查询出来后显示的结果样式
limit:返回的数量,后边跟数字,控制每次查询返回的结果数量。
skip:跳过多少个显示,和limit结合可以实现分页。
sort:排序方式,从小到大排序使用1,从大到小排序使用-1。
表示查询所有用户显示姓名和年龄,一页显示两个结果按年龄从小到大进行排序:
- db.user.find({},{name:true,age:true,_id:false}).limit(2).skip(0).sort({age:1});
- db.user.find({$where:"this.age>30"},{name:true,age:true,_id:false})
索引
var rs = db.user.find({username:"小白"}) //根据用户名查找用户
rs.forEach(rs=>{printjson(rs)}) //循环输出
建立索引
- db.user.ensureIndex({username:1})//1代表true
查看现有索引
- db.user.getIndexes()
删除索引
- db.randomInfo.dropIndex('username_1');//删除时填写的值并不是我们的字段名称,而是我们索引查询表中的name值。
复合索引
建立多一条索引
- db.user.ensureIndex({number:1})//1代表true
两个索引同时查询
var rs= db.randomInfo.find({username:'小白',number:666});
rs.forEach(rs=>{printjson(rs)});
指定索引查询(hint)
- var rs = db.randomInfo.find({username:'小白',number:666}).hint({number:1});//优先查询number
全文索引
用户创建和删除(数据库不能裸奔)
内置角色
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManage;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root
内部角色:__system
本地mongo创建
- use admin
- show dbs
- db.system.users.find() - 查找用户信息
- 创建超管
db.createUser({user:"cg",pwd:"123456",roles: [ { role:"root", db:"admin"}] }) - mongodb/bin.mongod.cfd文件加认证
- 任务管理器停止 重新开
- use admin
- show dbs 无登录没权限访问
- db.auth('cg', '123456')//登录
- show dbs 可看到内容
- use blog //进去创建这个数据库的用户
- db.createUser({user: 'blogUser', pwd: '456789', roles:[{role: 'readWrite', db: 'blog' }]})
- db.auth('blogUser','456789')//验证 返回1创建成功
- 项目mongodb://blogUser:456789@localhost/blog 连接数据库
docker mongo容器创建
- docker run -itd --name mongoServer -p 27017:27017 mongo --auth
- docker exec -it id… bash
- mongo
- use admin
- db.createUser({user:"cg",pwd:"123456",roles: [ { role:"root", db:"admin"}] })
- db.auth('cg', '123456')
- show dbs
- show collections
- db.system.users.find()
- 此时用navicat连接数据库是要账号密码才能连接的 接着创建用户
- use blog //进去创建这个数据库的用户
- db.createUser({user: 'blogUser', pwd: '456789', roles:[{role: 'readWrite', db: 'blog' }]})
- db.auth('blogUser','456789')
- 此时项目连接数据库需要设置账号密码才能连接成功 直接连是可以 接口一请求就凉凉
- 项目mongodb://blogUser:456789@172……/blog 连接数据库
删除用户
- db.system.users.remove({user:"jspang"})
修改密码
- db.changeUserPassword("blogAdmin","qq10!0$67|8*233&1^3")
备份与还原
- 备份
mongodump
--host 127.0.0.1
--port 27017
--out D:/databack/back
--collection user //可不写
--db user //可不写
--username xiaohei //可不写
--password 123456 //可不写
mongodump --host 127.0.0.1 --port 27017 --out D:/databack/back/
- 还原
mongorestore
--host 127.0.0.1
--port 27017
--username xiaohei //可不写
--password 123456 //可不写
mongorestore --host 127.0.0.1 --port 27017 D:/databack/back/
安装可视化工具
安装链接:https://www.mongodb.com/try/download/compass