MongoDB数据库安装及基础

本文详细介绍MongoDB数据库,涵盖其概念、优势、数据类型、安装步骤、基本操作及高级命令,适合初学者快速入门。

MongoDB数据库基础

## 数据库
  • 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
  • 分类
    • 关系型数据库(sql):Access mySql SqlServer oracle db2等。
    • 非关系型数据库( NoSql ): MongoDB,Redis,HBase,CouchDB等。
      • 非关系型数据库的优势:
        • 1.性能:NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高
        • 2.可扩展性:基于键值对,数据之间没有耦合性,非常容易水平扩展
      • 关系型数据库的优势:
        • 1.复杂查询:可以用SQL语句方便的在多个表之间做非常复杂的数据查询。
        • 2.事务支持:使得对于安全性能很高的数据访问要求得以实现。
  • NoSQL
    • NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
    • NoSQL用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

关系型数据库是由表和表之间的关系组成的,nosql是由集合组成的,集合下面是很多的文档。

非关系型数据库文件存储格式为BSON(一种JSON的扩展)。

MongoDB

  • 简介

    • MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

    • MongoDB 是非关系型数据库当中功能最丰富,最像关系型数据库的。

    • MongoDB中数据类型为: bson

      • bson就是json的超集,可以存储二进制【 图片 视频 音频 】,简称Binary JSON
      • 和JSON一样,支持内嵌的文档对象数组对象,但是**BSON有JSON没有的一些数据类型,**如Date和BinData类型。
      • 优点:灵活性高。
      • 缺点:空间利用率不理想
      • 特点:轻量性、可遍历性、高效性
  • 优点

    • 面向集合存储,易存储对象类型的数据。
    • 模式自由
    • 支持动态查询
    • 支持完全索引,包含内部对象
    • 支持查询
    • 支持复制和故障恢复
    • 使用高效的二进制数据存储,包括大型对象(如视频等)。
    • 自动处理碎片,以支持云计算层次的扩展性。
    • 支持RUBY,PYTHON,JAVA,C++,PHP等多种语言
    • 文件存储格式为BSON(一种JSON的扩展)
MongoDB的安装

MongoDB官网地址:

https://www.mongodb.com/

MongoDB下载地址:

https://www.mongodb.com/download-center#community

可视化工具:Robo 3T

  • 基本操作

    • 1.以管理员身份运行cmd

      cd到安装目录下面的bin文件夹下

    • 2.设置环境变量

      ​ path变量值最后加上分号 ;C:\Program Files\MongoDB\Server\4.0\bin(如果是在这个目录下)

    • 3.创建文件夹(如果存在data/log目录,就可以不做)

      • A、在d盘建立一个文件夹mongodb,并且建立子目录db和log.

        B、在log目录下建立一个文件MongoDB.log ,后缀为.log.

        ​ d:\mongodb\db、d:\mongodb\log, 分别用来存放数据库文件和数据库日志文件.

        C、把mongodb文件夹的只读属性去掉。

    • 4.启动MongoDB

      • 以管理员身份运行cmd
        • 在dos命令界面执行mongod --storageEngine mmapv1 --dbpath “d:\mongodb\db” --logpath “d:\mongodb\log\MongoDB.log”
        • 执行后,就挂起了,需要另外开命令窗口测试是否启动成功。
      • 测试连接
        • 原来的cmd窗口不关闭,以管理员身份再开一个cmd窗口,输入mongo或mongo.exe
        • 测试成功后,输入exit或ctrl+c可退出
    • 5.将MongoDB安装为windows服务

      • 原因:当mongod.exe被关闭时,mongo.exe 就无法连接到数据库了,因此每次想使用mongodb数据库都要开启mongod.exe程序,所以比较麻烦,此时我们可以将MongoDB安装为windows服务

      • 步骤:

        • 以管理员身份运行cmd,进入bin文件夹下,执行

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

          这里MongoDB.log就是开始建立的日志文件,–serviceName “MongoDB” 服务名为MongoDB

        • 启动mongodb服务

          • net start MongoDB
          • 出现服务已经启动成功后,再次测试连接mongo即可进入MongoDB。
        • 关闭服务和删除进程

          • 先ctrl+c
          • 再关闭服务:net stop MongoDB
MongoDB的基础使用
  • 常用命令

    • help 查看帮助
    • show dbs 显示数据库列表
    • use dbname 创建或者切换数据库
      • 创建的数据库并不在数据库的列表中,要显示它,我们需要向数据库dbname插入一些数据
      • MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。
    • show collections 显示数据库中的集合
  • 增加数据

    • db.web.save({name:“name”})

      • 创建了web集合,并增加一条数据
    • db.web.insert({name:“ghost”,age:10})

      • 在web集合中插入一条数据,如果没有web集合,MongoDB会自动创建
    • save()和insert()的区别:

      • 若新增的数据主键已经存在,insert()会不做操作并提示错误,而save() 则更改原来的内容为新内容。

      • 存在数据:{ _id : ObjectId(“57e8d34b4764fb71d0a89caa”), " name " : " 老李"} ,_id是主键

        insert({ _id : ObjectId(“57e8d34b4764fb71d0a89caa”), " name " : " 老王 " }) 会提示错误

        save(ObjectId(“57e8d34b4764fb71d0a89caa”), " name " : " 老王 " }) 会把 “老李” 改为 “ 老王” ,有update的作用。

  • 删除数据

    • db.web.remove({})
      • 删除web集合下所有数据
    • db.web.remove({“name”:“ghost”})
      • 删除web集合下name="ghost"的数据
    • db.web.drop() 或者 db.runCommand({“drop”:“web”})
      • 都是删除web集合
    • db.runCommand({“dropDatabase”:1})
      • 删除当前数据库
  • 查找数据

    • db.web.find()
      • 查找集合web中的所有数据
    • db.web.findOne()
      • 查找集合web中的第一条数据
    • db.web.find().pretty()
      • 格式化查询到的数据
  • 修改数据

    • db.web.update({name:’“aaa”’},{$set:{sex:“women”}},true,true)

      • 参数: 第一个参数是查找条件

        ​ 第二个参数是修改内容,主键不能修改

        ​ 第三个参数表示匹配所有符合条件的的数据

        ​ 第四个参数表示修改所有匹配到的数据

MongoDB的高级命令
  • 条件查找

    • db.webs.find({“key”:“value”})
      • 查找key为value的数据
    • db.webs.find({ “key” : { $gt: value } })
      • 查找key大于value的数据
    • db.webs.find({ “key” : { $lt: value } })
      • 查找key小于value的数据
    • db.webs.find({ “key” : { $gte: value } })
      • 查找key大于等于value的数据
    • db.webs.find({ “key” : { $lte: value } })
      • 查找key小于等于value的数据
    • db.webs.find({ “key” : { gt:value1,gt : value1,gt:value1,lt : value2 } } )
      • 查找key大于value1小于value2的数据
    • db.webs.find({ “key” : { $ne:value } } )
      • 查找key不等于value的数据
    • db.webs.find({ “key” : { $mod : [ 10 , 1 ] } })
      • 取模运算,条件相当于key % 10 == 1 即key除以10余数为1的数据
    • db.webs.find({ “key” : { $in: [ 1, 2, 3 ] } })
      • 属于,条件相当于key等于[ 1, 2, 3 ]中任何一个的数据
    • db.webs.find({ “key” : { $nin: [ 1, 2, 3 ] } })
      • 不属于,条件相当于key的值不属于[ 1, 2, 3 ]中任何一个的数据。
    • db.webs.find({ “key” : { $size: 1 } })
      • $size 数量、尺寸,条件相当于key对应的值的数量是1(值必须是数组)的数据
    • db.webs.find({ “key” : { $exists : true|false } })
      • $exists 字段存在,true返回存在字段key的数据,false返回不存在字段key的数据
    • db.webs.find({ $or : [{a : 1}, {b : 2} ] })
      • 符合其中任意一个条件的数据
  • 排序

    • db.webs.find().sort({ “key1” : -1 ,“key2” : 1 })
      • 对查询到的数据先进行key1字段降序排列,再按key2字段升序排列
  • 其他

    • db.webs.find().skip(i)

      • 从下标为i的地方开始截取数据
    • db.webs.find().limit(i)

      • 从0截取i个数据
    • db.webs.find().count()

      • 返回结果集条数
    • sort()排序优先级高于skip(),所以无论在前后,都先执行sort()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值