数据库-Mongo

和自甴很熟 提交于 2019-11-27 22:09:12
  1. 分类【有没有表】
    • 关系型【sql】数据库
      • 代表:MySQL
      • 组成
        • 数据库/表/行
    • 非关系型【Nosql】数据库
      • 代表:MongoDB
      • 组成
        • 数据库/集合/文档
      • 文档中存储的是键值对,类似于json
      • MongoDB的数据类型是:bson
      • bson是json 的超集,可以存储二进制【图片,视频,音频】
  2. 分布式
    • 前端: 类似 模块化
    • Java: 微服务 、 分布式 springboot[框架]
    • 大数据: 微服务 分布式 hadoop [框架]
    • Php: ThinkPhp [框架]

。。。。。。。。。。。。。

Mongo数据库

安装

一直next即可,在遇到 I accept the terms in the License Agreement 时取消勾选

MongoDB的安装

  1. 对mongodb数据库的操作是通过执行命令来完成的,我的电脑里面这些命令安装在: C:\Program Files\MongoDB\Server\3.2\bin

  2. 要执行这些命令,需要以管理员身份运行cmd( 不建议用git来操作,因为git不是utf-8编码,会有中文乱码问题)。 打开开始菜单,找到命令提示符,在上面点击右键,选择以管理员身份运行。

  3. 要想执行mongodb的命令,需要cd到他的安装目录下面的bin文件夹下。

为了在dos窗口的任何目录下都能执行mongo的命令,需要先设置环境变量,因为计算机在执行命令的时候会在环境变量中找对应的命令。

  1. 设置环境变量

    • 右键点击此电脑,点击属性,找到高级系统设置点击,找到右下角环境变量,找到path变量点击编辑,新建输入C:\Program Files\MongoDB\Server\3.2\bin
  2. 创建文件夹(重点) 如果已经有data/log目录了就可以不做了

    • 在d盘建立一个文件夹mongodb,并且建立子目录db和log.
    • 在log目录下建立一个文件MongoDB.log ,后缀为.log. d:\mongodb\db、d:\mongodb\log, 分别用来存放数据库文件和数据库日志文件.
    • 把mongodb文件夹的只读属性去掉。

6.启动MongoDB

  • 以管理员身份运行cmd.exe,进入dos命令界面,执行下列命令

mongod --storageEngine mmapv1 --dbpath "d:\mongodb\db" --logpath "d:\mongodb\log\MongoDB.log"

  1. 将MongoDB安装为windows服务(重点中的重点)
  • 以管理员身份运行cmd,进入bin文件夹,执行下列命令

mongod --storageEngine mmapv1 --dbpath "d:\mongodb\db" --logpath "d:\mongodb\log\MongoDB.log" --install --serviceName "MongoDB"

  • NET START MongoDB 启动
  • 先 ctrl+c 关闭服务:net stop MongoDB

MongoDB基础使用

  1. 常用的命令(重点)
  • help 查看帮助

    • 显示数据库列表 > show dbs
    • 创建数据库 > use dbname
  • db.web.save({"key":"value"}) 增加数据

  • 删除数据(重点中的重点)

    1. 删除文档
      • db.users.remove({}) 删除users集合下所有数据
      • db.users.remove({"name": "lecaf"}) 删除users集合下name=”lecaf”的数据
    2. 删除集合
      • db.users.drop()或db.runCommand({"drop":"users"}) 删除集合users
    3. 删除数据库
      • db.runCommand({"dropDatabase": 1}) 删除当前数据库
  • 查找数据(重点中的重点)

    • db.users.find() 查找users集合中所有数据
    • db.users.findOne()查找users集合中的第一条数据
    • db.users.find().pretty()格式化查询到的数据
  • 修改数据(重点中的重点) db.web.update({"name":"a1"}, {$set: {sex:”women”}},true,true)修改name=a1的数据为sex=1,第一个参数是查找条件,第二个参数是修改内容,主键不能修改,第三个参数表示匹配所有符合条件的数据,第四个参数表示修改所有匹配到的数据

  1. MongoDB高级命令(重点)
  • 条件查找
    • db.collection.find({ "key" : value }) 查找key=value的数据
    • db.collection.find({ "key" :{ $gt: value }}) key > value
    • db.collection.find({ "key" :{$lt: value }}) key < value
    • db.collection.find({ "key" :{ $gte: value }}) key >= value
    • db.collection.find({ "key" :{$lte: value }}) key <= value
    • db.collection.find({ "key" :{ $gt: value1 , $lt: value2}}) value1 < key <value2
    • db.collection.find({ "key" :{$ne: value }}) key <> value 匹配不等于该值的
    • db.collection.find({ "key": { $mod : [ 10 , 1 ] } }) 取模运算,条件相当于key % 10 == 1 即key除以10余数为1的
    • db.collection.find({"key": { $in: [ 1, 2, 3 ] } }) 属于,条件相当于key等于[ 1, 2, 3 ]中任何一个
    • db.collection.find({"key": { $nin: [ 1, 2, 3 ] } }) 不属于,条件相当于key的值不属于[ 1, 2, 3 ]中任何一个。
    • db.collection.find({ "key": { $size: 1 } })$size 数量、尺寸,条件相当于key对应的值的数量是1(值必须是数组)
    • db.collection.find({ "key": { $exists : true|false } }) $exists字段存在,true返回存在字段key的数据,false返回不存在字段key的数据
    • db.collection.find({ $or : [{a : 1}, {b : 2} ] })符合两个条件中任意一个的数据。$or语法表示或的意思。
  • 排序
    • db.collection.find().sort({ "key1" : -1 ,"key2" : 1 }) 这里的1代表升序,-1代表降序
  • 其他
    • db.collection.find().limit(5) 控制返回结果数量,如果参数是0,则没有约束,limit()将不起作用
    • db.collection.find().skip(5)    控制返回结果跳过多少数量,如果参数是0,则当作没有约束,skip()将不起作用,或者说跳过了0条
    • db.collection.find().skip(5).limit(5) 可用来做分页,跳过5条数据再取5条数据
    • db.collection.find().count() count()返回结果集的条数
    • db.collection.find().skip(5).limit(5).count(true) 在加入skip()和limit()这两个操作时,要获得实际返回的结果数,需要一个参数true,否则返回的是符合查询条件的结果总数
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!