Mongodb 安装详解

关于

今天第一次学习mongodb 遇到很多困难, 网上看了很多博客,发现解决方案都不是很好, 可能是比较菜 嘻嘻 一开始连什么是Mongodb 都不知道,而博客是会告诉我怎么安装,这搞得我很被动,一脸茫然,所以今天我就来写篇博客让大家都能了解 Mongodb ,如果觉得对你有一定帮助,就请大佬关注一下子,这是对我最大的肯定谢谢啦!

什么是MongoDB

在这里插入图片描述

  • MongoDB是一个基于分布式文件存储 [1] 的数据库。由 C++ 语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  • MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
1. 从上面我们知道 MongoDB 是用 C++ 编写的
2. MongoDB 的数据结构和json差不多 
3. MongoDB是一款为web应用程序和互联网基础设施设计的数据库管理系统

如果还不明白我们来看一副概念图,他和普通数据库的区别帮助你更容易理解MongoDB 的概念

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键

通过下图实例,我们也可以更直观的了解Mongo中的一些概念:

在这里插入图片描述

面试题

以下是我在面试,收集到的MongoDB面试题

  • 你说的NoSQL数据库是什么意思?
  • NoSQL与RDBMS直接有什么区别?
  • 为什么要使用和不使用NoSQL数据库?
  • 说一说NoSQL数据库的几个优点?
  • MongoDB成为最好NoSQL数据库的原因是什么?
  • 名字空间(namespace)是什么?
  • 如果用户移除对象的属性,该属性是否从存储层中删除?
  • 什么是master或primary?
答案 :建议大家自己去百度,这样记得更牢固,

下载和安装MongoDB

为了方便大家下载这里准备两种下载方式

网盘: 网盘点击这里 密码 ctyy
官网下载
在这里插入图片描述点击DOWNLOAD按钮,开始下载
不过值得注意的是,上次测试了最新版本,在官网下载安装之后没有mongo.exe和mongod.exe

因此我又卸载了官网版本,使用解压包重新安装,解压包版本如下:
在这里插入图片描述有兴趣的话还是可以从官网下载,然后观察下差异
安装过程一路Click Next然后 Click Install 等安装完成即可,下图安装路径,建议自定义一下,不推荐安装到系统盘
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述安装完成

二:配置使用

  1. 创建几个文件夹具体如下:数据库路径(data目录)、日志路径(logs目录)和日志文件(logs/mongo.log文件)
  2. 创建配置文件mongo.conf,文件内容如下:
    在这里插入图片描述
  3. 启动MongoDB服务
    mongod –config “D:\Mongo\mongo.conf”
    这个是使用自己刚刚在上面配置的配置文件来启动服务的。注意修改成自己的目录位置
    在这里插入图片描述
  4. 创建并启动MongoDB服务
    如果每次都如上操作,岂不是相当麻烦,按照如下命令来创建并启动MongoDB服务,就可以通过windows服务来管理MongoDB的启动和关闭了
    mongod –config “D:\Mongo\mongo.conf” –install –serviceName “MongoDB”
    net start MongoDB
    执行完之后,就可以去服务里看是否有成功创建了
    在这里插入图片描述在这里插入图片描述接下来使用Robomongo客户端管理工具就可以连接,后因收购被改名为Robo 3T CSDN 获取地址
    在这里插入图片描述
    Nice,连接成功,如下图

在这里插入图片描述
MongoDB会默认创建admin和local库,不过刚才安装的Mongodb并不需要权限验证,如果数据安全性不需要很高,则可以安装不需要验证的db库,通过设置服务器之间的白名单做到访问安全

三:安装Authorization校验的MongoDB

需要注意的是:如果之前安装MongoDB时不需要 Auth,那么必须卸载MongoDB服务,进行重新安装,设置账号权限才生效!
首先卸载之前的mongodb服务,接着删除data文件夹下所有东西,再清空log
然后再次注册个服务的话,命令多添加个 –auth
mongod –config “D:\Mongo\mongo.conf” –auth –install –serviceName “MongoDB”
net start MongoDB
此时就可以用Robomongo工具进行连接试一下

mongod.exe --remove --serviceName "MongoDB"
mongod --config "D:\Mongo\mongo.conf"  --auth --install --serviceName "MongoDB"
net start MongoDB
use admin
db.createUser({user: "admin",pwd: "password",roles: [ { role: "root", db: "admin" } ]});
exit

e.g. 新建数据库

mongo --port 27017 -u admin -p password --authenticationDatabase admin
创建数据库lxkdb,当在这个数据库写入数据的时候,这个数据库就出现了
use minily
创建普通账户
db.createUser({user: "minily",pwd: "password",roles: [{ role: "readWrite", db: "minily" }]});
选择刚刚创建的数据库
use minily
然后进行数据库权限的认证,返回1就是认证OK,0就是认证失败。这个也是重点,在操作数据库之前要有那么一次的权限认证
db.auth('minily','password')

新建Collection,并添加一条数据

db.student.save({name: 'zhangsan', age: 25, sex: true});
在数据库minily中,插入一条数据,这个表叫student
show collections
显示当前数据库有的集合,也就是表
db.student.find()
查student表全部

·以上操作在Robomongo工具上来实现,简直不要太爽
·索引等进阶知识可以看官网
db.collection.createIndex()

roles 用户角色:
oles 用户角色:

  1. 数据库用户角色:read、readWrite;
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  4. 备份恢复角色:backup、restore;
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root

快速启动和停止服务的快捷键
a. net start serviceName

net stop serviceName

最后,每次要在命令行使用mongo命令,都得进入到对应的bin目录下,这样很是麻烦,配置个系统环境变量,方便直接使用

在这里插入图片描述这样就可以直接在cmd命令行,不需要进行目录切换,就可以直接使用 mongo.exe 命令
在这里插入图片描述—————————常用命令以及T-SQL增删改查语句————————————–

查看表基本信息:db.getCollection(‘AUDCAD’).stats() 类似于MySql的EXPLAIN
在这里插入图片描述倒序查询数据:db.getCollection(‘AUDCAD’).find({}).sort({field:-1})

在这里插入图片描述

命令

  • show dbs; #查看全部数据库
  • show collections; #显示当前数据库中的集合(类似关系数据库中的表)
  • show users; #查看当前数据库的用户信息
  • use ; #切换数据库跟mysql一样
  • db;或者db.getName(); #查看当前所在数据库
  • db.help(); #显示数据库操作命令,里面有很多的命令
  • db.foo.help(); #显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令
  • db.foo.find(); #对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据)
  • db.foo.find( { a : 1 } ); #对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1
  • db.version(); #当前db版本
  • db.getMongo(); #查看当前db的连接机器地址
  • db.dropDatabase(); #删除数据库

在这里插入图片描述好了,那我们就写到这里了,希望不懂的地方还请大家多多指教

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章