MongoDB安装和使用(保姆级教程)

一.简介

1 MongoDB概述

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

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

默认端口为27017

数据库 (DataBase) 是按照数据结构来组织、存储和管理数据的 应用程序

关系型数据库和非关系型数据及其区别

介绍

一个通俗易懂的比喻:关系型数据库就类似于Excel,非关系型数据库类似于word,用哪一个,取决你想要编辑和处理什么数据。

关系型数据库:将数据存储在表中的数据库,以二维表为数据结构。表和字段类型之间的关系需要明确定义,以SQL语句为操作指令,也称为SQL数据库。主流的关系型数据库包括 Oracle、MySQL、SQL Server、Microsoft Access、DB2 等。

非关系型数据库:不像关系数据库那样使用行和列的表格模式的数据库。相反,它的存储模型是针对它所存储的数据类型进行优化的。不只有使用SQL语句作为操作指令,可以使用其他类型的查询语言,也被称为NoSQL(Not only SQL)数据库, 不需要预先定义关键数据的模式,比SQL数据库更加灵活。主流的 NoSQL 数据库有 Redis、MongBD、Hbase、CouhDB 等。

关系型数据库

关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织

优点: 1、易于维护:都是使用表结构,格式一致; 2、使用方便:SQL语言通用,可用于复杂查询; 3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。

缺点: 1、读写性能比较差,尤其是海量数据的高效率读写; 2、固定的表结构,灵活度稍欠; 3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。

非关系型数据库

非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。

优点: 1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。 2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘; 3、高扩展性; 4、成本低:nosql数据库部署简单,基本都是开源软件。

缺点: 1、不提供sql支持,学习和使用成本较高; 2、无事务处理; 3、数据结构相对复杂,复杂查询方面稍欠。

区别

1、数据存储方式不同。 关系型和非关系型数据库的主要差异是数据存储的方式。关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。

与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。

2、扩展方式不同。

SQL和NoSQL数据库最大的差别可能是在扩展方式上,要支持日益增长的需求当然要扩展。

要支持更多并发量,SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。

因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来客服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。而NoSQL数据库是横向扩展的。

而非关系型数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。

3、对事务性的支持不同。

如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是你的最佳选择。SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务。

虽然NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。

2 数据库的作用

数据库的主要作用就是 管理数据 ,对数据进行 增删改查 crud

3数据库管理数据的特点

相比于纯文件管理数据,数据库管理数据有如下特点: 1.速度更快 2.扩展性更强 3.安全性更强

4为什么选择 Mongodb

操作语法与 JavaScript 类似,容易上手,学习成本低

二.安装

传送门 MongoDB安装(新版本保姆级教程)_最新安装mongodb-CSDN博客

管理员打开开启或关闭服务

cmd输入mongo报错 安装Mongoshell,MongoDB6之前shell是直接在里面的6之后需要单独下载

解决方法

安装shell 传输门 MongoDB Shell Download | MongoDB

把bin目录在环境变量中配置

*在cmd中输入mongosh即可进入命令行界面*

输入命令时报错

解决方法

win+r 打开 services.msc

开启mongodb服务

三.核心概念

Mongodb 中有三个重要概念需要掌握

  • 数据库 (database) 数据库是一个数据仓库,数据库服务下可以创建很多数据库,数据库中可以存放很多集合。

数据库和传统的关系型数据库差不多的概念,每个数据库含有多个集合,每个数据库最后会作为文件储存至服务器中,另外还有一些特殊的数据库进行了保留如下:

admin:类似于root数据库,如果将用户添加至admin数据库将获取所有数据库的权限,其中一些比如查找所有数据库、关闭服务器的服务端命令只能从这里运行。

local:存储当前服务器所有本地集合的数据库,永远不可以复制。

config:主要是存储分片等信息

  • 集合 (collection)集合类似于 JS 中的数组,在集合中可以存放很多文档

  • 文档 (document)文档是数据库中的最小单位,类似于JS 中的对象

大家可以通过JSON 文件来理解 Mongodb 中的概念

  • 一个 JSON 文件 好比是一个 数据库 ,一个 Mongodb 服务下可以有 N个数据库

  • JSON 文件中的 一级属性的数组值 好比是 集合

  • 数组中的对象好比是 文档

  • 对象中的属性有时也称之为 字段

注意:

一般情况下 一个项目使用一个数据库 一个集合会存储同一种类型的数据

四.MongoDB常规操作

登陆数据库

在终端输入 mongosh

4.1 数据库操作

4.1.1 查看

MongoDB对于数据库的查看

#推荐
show dbs
#不推荐
show databases

4.1.2 创建

对于数据库的创建,MongoDB并未提供一个独立的接口,而是使用类似于mysql这种use 的语法,当使用的数据库不存在时则进行创建

# 切入 test 数据库,此时触发 test 数据库的创建工作
use test
db.myCollection.insertOne( { x: 1 } );

【注】 当只是use 时,没有进行集合、文档操作,此时不会创建该数据库,只有真正操作集合后才会创建。

4.1.3 删除

对于数据库的删除,只需要简单的进入到该数据库执行db.dropDatabase()方法即可

# 删除代码执行前最好是进入改数据库后执行  use
db.dropDatabase()

4.2 集合操作

4.2.1 集合创建

db.createCollection(name, options)

参数说明:

  • name: 要创建的集合名称

  • options: (可选)参数的集合

4.2.2 显示当前所有集合
show collections
4.2.3 删除某个集合
db.集合名.drop()
4.2.4 重命名集合
db.集合名.renameCollection('新集合名')

4.3文档操作

4.3.1 新增

#单个插入
db.集合名.insert({"name":"张三","age":18})
 
#多个插入
db.集合名.insert([{"name":"李四","age":18},{"name":"王五"}])

4.3.2 查询

db.集合名.find(查询条件)
db.arts.find({age:19})

4.3.3 更新,修改

db.集合名.update(条件,新数据[是否新增,是否修改多条,])
#只修改年龄
db.集合名.update({name:'张三'},{$set:{age:19}})
update() 有两个参数,都是对象,中间用逗号“ ,”间隔;
第一个参数表示需要修改的值;
第二个参数用 $set 操作符指向更新后的值。

是否新增 指条件匹配不到数据则插入(true是插入,false否不插入默认)

是否修改多条 指将匹配成功的数据都修改(true是,false否默认)

db.c3.update({uname:"zs2"},{$set:{age:30}},false,true)

4.3.4 删除

db.集合名.remove(查询条件,true)
是否删除一条
true:是(删除的数据为第一条)

你可能感兴趣的:(mongodb,数据库)