关于Mongodb

260 阅读2分钟

安装

官网下载:https://www.mongodb.com/try/download/community

参考资料:https://www.runoob.com/mongodb/mongodb-window-install.html

  1. 配置环境变量
  1. 安装目录根目录创建data/db文件夹

3.终端检查命令

输入mongod 启动服务器

输入mongo连接数据库

db.version() 查看版本号

基础命令

  1. 启动

一个cmd窗口输入mongod启动服务器,一个cmd窗口输入mongo连接数据库。

  1. show dbs 查看数据库

  2. use xxx 进入数据库

  3. show collections 查看数据库中的所有集合

  4. db 查看目前在哪个库中

  1. 创建数据库 增删改查
  1. 删除集合与数据库
  1. 批量插入
  1. 修改
image.png
image.png
  1. 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})

不等修饰符

image.png
image.png

日期查找

image.png
image.png

多条件查询

image.png

find数组查询

image.png

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});
image.png
  • 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

全文索引

image.png

用户创建和删除(数据库不能裸奔)

内置角色

数据库用户角色: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文件加认证
    image.png
  • 任务管理器停止 重新开
  • 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