赞
踩
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数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。
数据库的主要作用就是 管理数据 ,对数据进行 增删改查 crud
相比于纯文件管理数据,数据库管理数据有如下特点: 1.速度更快 2.扩展性更强 3.安全性更强
操作语法与 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 文件中的 一级属性的数组值 好比是 集合
数组中的对象好比是 文档
对象中的属性有时也称之为 字段
注意:
一般情况下 一个项目使用一个数据库 一个集合会存储同一种类型的数据
在终端输入 mongosh
MongoDB对于数据库的查看
#推荐
show dbs
#不推荐
show databases
对于数据库的创建,MongoDB并未提供一个独立的接口,而是使用类似于mysql这种use <database> 的语法,当使用的数据库不存在时则进行创建
# 切入 test 数据库,此时触发 test 数据库的创建工作
use test
db.myCollection.insertOne( { x: 1 } );
【注】 当只是use <new database> 时,没有进行集合、文档操作,此时不会创建该数据库,只有真正操作集合后才会创建。
对于数据库的删除,只需要简单的进入到该数据库执行db.dropDatabase()方法即可
# 删除代码执行前最好是进入改数据库后执行 use <database>
db.dropDatabase()
db.createCollection(name, options)
参数说明:
name: 要创建的集合名称
options: (可选)参数的集合
show collections
db.集合名.drop()
db.集合名.renameCollection('新集合名')
#单个插入
db.集合名.insert({"name":"张三","age":18})
#多个插入
db.集合名.insert([{"name":"李四","age":18},{"name":"王五"}])
db.集合名.find(查询条件)
db.arts.find({age:19})
db.集合名.update(条件,新数据[是否新增,是否修改多条,])
#只修改年龄
db.集合名.update({name:'张三'},{$set:{age:19}})
update() 有两个参数,都是对象,中间用逗号“ ,”间隔;
第一个参数表示需要修改的值;
第二个参数用 $set 操作符指向更新后的值。
是否新增 指条件匹配不到数据则插入(true
是插入,false
否不插入默认)
是否修改多条 指将匹配成功的数据都修改(true
是,false
否默认)
db.c3.update({uname:"zs2"},{$set:{age:30}},false,true)
db.集合名.remove(查询条件,true)
是否删除一条
true:是(删除的数据为第一条)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。