MongoDB(一)简介、和关系型数据库比较、安装及常用命令、账号配置

一、MongoDB简介及和关系型数据库比较

1、MongoDB是一种非关系型数据库,是用C++语言编写的。其特点是高性能、易部署、易使用,存储数据方便。

主要特性:

  • 面向集合存储,易于存储对象类型数据;
  • 支持动态查询,支持完全索引,包含内部对象
  • 模式自由
  • 支持主从复制、分布式和故障恢复
  • 使用高效的二进制存储,包括大型对象
  • 文件的存储格式未BSON(JSON格式的一种扩展)
2、MongoDB和关系型数据库对比
比较项MongoDBMysql/Oracle
集合collection二维表table
表中的一行数据文档document一条记录record
表中字段键key字段field
字段值值value值value
灵活性和扩展性
  • MongoDB和关系型数据库逻辑结构对比
比较项MongoDBMysql/Oracle
数据库databasedatabase
collectiontable
表记录documentrows

MongoDB和关系型数据库都有数据库的概念,然后MongoDB里面的集合对应关系型数据库里面的表的概念,但是MongoDB集合里面没有列、行、表的关联关系这些概念,这是和关系型数据库很大的不同之处,MongoDB中集合里面的一个文档document就相当于一条记录。

3、MongoDB名词解释:
  • database ,就是一个数据库,一个MongoDB可以有多少数据库,每个数据库可以有自己的集合和权限,这和mysql等关系型数据库一样;
  • collection,集合,就是一组文档的集合,类似于数据库中的表;
  • document,文档,是MongoDB中的基本数据单元,类似于表中的一行数据,但是和mysql等关系型数据库表中的记录不一样,MongoDB是以key,value形式存储的,例如{“name”:“张三”,“mobile”:“13111111111”};
二、MongoDB安装
1、mongodb下载

MongoDB的安装很简单,只需去官网下载压缩文件,解压到自己计算机自定义目录里面,然后配置好环境变量即可。
官方下载地址: https://www.mongodb.com/try/download
在这里插入图片描述
在这里插入图片描述
根据自己的需要选择对应的系统和版本进行下载,MongoDB版本中,偶数表示正式版,奇数表示开发版本。

2、环境变量配置
  • 下载完成开始安装,我下载的是zip压缩包,解压缩zip后重命名为mongodb-3.6.23,然后放到如下路径:D:\Java\mongodb-3.6.23
  • 配置环境变量,此电脑–>右键–>属性,然后点击高级系统设置–>点击环境变量
    在这里插入图片描述
    然后点击系统变量中的新建
    在这里插入图片描述
    新建MONGODB_HOME环境变量,变量名为MONGODB_HOME,变量值为解压缩后mongodb所在的路径,这里为D:\Java\mongodb-3.6.23,然后点击确定
    在这里插入图片描述
    然后在系统变量中找到Path这一栏,点击编辑
    在这里插入图片描述
    然后在弹框中点击新建,输入框中输入%MONGODB_HOME%\bin,然后确定,对应之前的弹框也要全部点击确定
    在这里插入图片描述
    然后打开cmd命令框,输入mongo -version,能显示mongodb的版本信息,环境变量就配置成功了。
    在这里插入图片描述

三、MongoDB启动和常用命令

1、启动mongodb
  • 在D盘Java文件夹里面新建mongo_db文件夹,这个文件夹就是存放mondb存放数据文件的路径,然后打开一个cmd命令窗口,执行命令:mongod --dbpath D:\Java\mongo_db,这样就启动了一个mongodb服务了,就相当于数据库的服务端;
    在这里插入图片描述
  • 打开另外一个cmd命令行窗口,执行mongo命令就可以连接到本地刚刚启动的这个mongodb数据库了,也可以使用mongo ip:port方式连接,这个就相当于一个客户端;
    注意:安装启动MongoDB数据库后,默认是【非授权模式】,也就是不需要任何权限验证,直接在命令窗口中输入 mongo 回车,就可以连接上了。
    在这里插入图片描述
    接下来就可以使用mongodb的命令了:
    在这里插入图片描述
2、常用命令
命令释义
show dbs查看所有数据库
use 数据库名称切换数据库,如果数据库不存在则创建
db查看当前所在数据库
db.stats()查看当前数据库详情
show collections查看数据库下的所有集合
db.createCollection(“user”)创建一个名为user的集合
db.集合名称.insert({“name”:“张三”,“age”:20}))向集合中插入一条数据,db.user.insert({“name”:“张三”,“age”:20})),mongodb的数据为key:value格式的
db.集合名称.remove({删除条件})从集合中删除数据,db.user.remove({“age”:20}),表示从user集合中删除age=20的数据
db.集合名称.find({条件})根据条件查询数据,db.user.find({“name”:“张三”},{“age”:20})表示查询user集合中name=张三并且age=20的数据
db.集合名称.findOne()返回第一条数据
db.集合名称.count()统计集合中的总数
db.集合名称.find().count()根据条件统计集合中的总数
db.集合名称.find().sort({age:1})根据字段排序,1:升序,-1:降序
db.集合名称.find().skip(2).limit(3)分页查询,skip跳过第几条,limit查询多少条
db.集合名称.find({key:{$in:[val]}})in 查询db.user.find({age:{$in:[20]}})
db.集合名称.update(criteria,objNew,upsert,multi)criteria:用于设置查询条件的对象,objNew:用于设置更新内容的对象,upsert:如果记录已经存在,更新它,否则新增一个记录,取值为0或1,multi:如果有多个符合条件的记录,是否全部更新,取值为0或1,比如 db.user.update({name:“张三”},{$set:{age:“30”}},0,1)) ,表示将user集合中符号name=张三的数据,将age修改为30
db.集合名称.find({$or:[{name:”user2”},{age:30}]})$or,相当于关系型数据库中的OR,例如查询name为user2或者age为3的文档
db.集合名称.find({$nor:[{name:”user2”},{age:3}]})例如查询name不是user2,age不是3的文档
3、索引

mongodb中也有索引

命令释义
db.集合名称.ensureIndex({key:1})创建普通索引,key就是要加索引的字段
db.集合名称.stats()查看索引相关情况
db.集合名称.find({key:value}).explain()查看查询计划
db.集合名称.dropIndex({key:1})删除索引
db.集合名称.ensureIndex({key:1},{unique:true})创建唯一索引
4、固定集合
  • 固定集合特性:固定集合很像环形队列,如果空间不足,最早的文档就会被删除,为新的文档腾出空间。一般来说,固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制。
    db.createCollection(“name”,{capped:true,size:100000,max:100})
    创建一个固定集合,size指定集合大小,单位为KB,max指定文档的数量。当指定文档数量上限时,必须同时指定大小。淘汰机制只有在容量还没有满时才会依据文档数量来工作。要是容量满了,淘汰机制会依据容量来工作。
5、账号密码和权限配置

因为MongoDB启动后默认是非授权模式,不需要账号密码就可以连接上,所以要自己配置账号密码和权限,然后启动mongodb的时候使用授权方式启动:mongod --dbpath D:\Java\mongo_db --auth,–auth表示客户端需要授权才能连接上数据库

  • 创建一个超级管理员admin,授予root权限:
    在这里插入图片描述
    admin用户创建好之后,重新使用mongod --dbpath D:\Java\mongo_db --auth启动mongodb,然后打开一个cmd命令行窗口使用:mongo -u admin -p 123456连接mongodb,账号密码错误的话是不能连接上的
    在这里插入图片描述
    使用db.updateUser(“admin”,{pwd:“111111”})修改admin账号的密码,然后重新登陆看看
    在这里插入图片描述
    db.dropUser(“test”)删除用户
  • 给指定的数据库配置账号
    创建一个test1数据库,给test1数据库创建一个testAdmin账号
    在这里插入图片描述
    然后打开一个新的cmd命令行窗口,用我们刚刚创建的testAdmin账号登陆看看:
    登陆成功
  • 关于创建账号中role字段的属性说明
属性说明
root只在admin数据库中可用,超级账号,超级权限
read允许用户读取指定数据库
readWrite允许用户读写指定数据库
dbAdmin允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
dbOwner在当前DB中执行任意操作
userAdmin允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限

下一篇:MongoDB(二)备份恢复、导入导出、主从复制、副本集集群、分片存储.

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值