NoSQL和MongoDB
- NoSQL(Not Only SQL)
- MongoDB安装配置
- MongoDB的客户端和服务端命令
NoSQL(Not Only SQL)
(一)NoSQL 简介
首先了解sql --结构化查询语言 ,专门用来处理我们关系型数据库数据。
nosql指的是非关系型的数据库,不同于传统的关系型数据库的数据库管理系统的统称。
非关系型数据库是数据革命的原因:
- 现在互联网数据的形式比较多样,而且内容是比较丰富。这种庞杂的数据如果使用关系型数据库来存储,开销就会极大,而且速度慢。
- 非关系型数据库,存储的数据没有固定格式,比较适合现在的互联数据的需求。非关系型数据不考虑数据的格式,只要简单操作就可以存储下来,这样就可以使得存储速度比较快。
(二)关系型数据库和非关系型数据库的区别?特点
非关系型数据库的特点:
- 代表着不仅仅是SQL
- 没有声明性查询语言————查询简单高效
- 没有预定义的模式
————存储的格式非常多样化
————键值对存储,列存储,文档存储,图形数据库
- 最终一致性,而非ACID属性————mongo的简单事务特性
- 非结构化和不可预知的数据
- 高性能,高可用性和可伸缩性————功能强大
(三)非关系型数据库在网站架构中地位
MongoDB安装配置
(一)MongoDB 简介
MongoDB 是一个基于分布式文件存储的数据库,旨在为 WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB 主要特点:
- MongoDB 文档数据库,存储的是文档。
- MongoDB 的内部执行引擎是 JS 解释器。当我们存储一个文档时,会将这个文档保存成 Bson 格式存储。查询时将其转换为 JS 对象,并可以通过熟悉的 JS 语法来操作。
- MongoDB 的数据库和集合都可以隐式创建。
(二)Mongo的安装
MongoDB的客户端和服务端命令
(一) mongod 和 mongo 的区别
- 前者是启用MongoDB进程,后者是对MongoDB进行连接操作
- mongod是处理MongoDB系统的主要进程。它处理数据请求,管理数据存储,和执行后台管理操作。当我们运行mongod命令意味着正在启动MongoDB进程,并且在后台运行。
(二)mongod命令
–dbpath 数据库启动之后,存储数据的位置
–port -p哪个端口上
(三)mongo启动命令
–port 端口
–host ip
(四)mongo的基础术语
(五)基础命令
- show dbs—显示有哪些数据库
- use datebase_name—选库—【隐式创建数据库】
- show collections/tables --查看一个数据库下面的所有集合
- 如何创建数据
存储内容到数据库就可以创建:
- use 一个不存在库
- 创建一个集合—数据就会创建成功。
————db.createCollection(‘python’)
- 在不存在的集合里插入数据,隐式创建
————db.java.insert({name:‘zhangsan’,age:10})
(六)所有的crud命令(常用)的基础格式:
db.集合名称.insert/update/find/remove(重点关注参数的形式)
- insert—插入
- 插入单条——db.col_name.insert({单条文档})
- 插入多条——db.col_name.insert([{单条文档},{单条文档},{单条文档},…])
- find–查询
- 查询表达式—{}
关系条件:–基础条件:
{k:v}–k=v
{k:{$gt:v}}–k>v
k:{$lt:v}}–k {k:{$lte:v}}–k {k:{$ne:v}}–k!=v
{k:{$gte:v}}–k>v
逻辑and ,or,nor
{$or:[{条件1},{条件2},{}…]}
{$and:[{条件1},{条件2},{}…]}
{$nor:[{条件1},{条件2},{}…]}
- 语法:
db.coll_name.find({查询条件},{field1:1,field:0},–显示的列).pretty()
_id:默认是显示的,只能手动指定不显示,他才不显示。
pretty:就是漂亮的显示
- update–更新
- 语法: db.coll_name.update({查询表达式},{更新的内容},{可选参数})
- 更新的内容参数:如果它是一个文档,表示新文档替换旧文档。-----文档替换并不是更新。
- 更新表达式:
$set 修改某列的值
$unset 删除某个列
$rename 重命名某个列
$inc 增长某个列
- 可选参数:
multi:true,匹配出多个内容,全部更新,默认是false,也就是更新一条。
{upsert:true}如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。可以做到数据不存在就插入,存在就更新。
(七)MongoDB的导入导出
-f和-q可省,–type配合文件名.csv。