第十讲 NoSQL和MongoDB

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的安装
第十讲 NoSQL和MongoDB_第1张图片

MongoDB的客户端和服务端命令

(一) mongod 和 mongo 的区别

  • 前者是启用MongoDB进程,后者是对MongoDB进行连接操作
  • mongod是处理MongoDB系统的主要进程。它处理数据请求,管理数据存储,和执行后台管理操作。当我们运行mongod命令意味着正在启动MongoDB进程,并且在后台运行。

(二)mongod命令
–dbpath 数据库启动之后,存储数据的位置
–port -p哪个端口上
(三)mongo启动命令
–port 端口
–host ip
(四)mongo的基础术语
第十讲 NoSQL和MongoDB_第2张图片
(五)基础命令

  • 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的导入导出
第十讲 NoSQL和MongoDB_第3张图片
-f和-q可省,–type配合文件名.csv。

你可能感兴趣的:(#,爬虫学习笔记,python,mongodb)