数据库--MongoDB

第1章:数据库

1.1 数据库是什么

数据库(DataBase)是按照数据结构来组织、存储和管理数据的仓库。

1.2 为什么要使用数据库

我们的程序都是在内存中运行的,一旦程序运行结束或者计算机断电,程序运行中的数据都会丢失。所以我们就需要将一些程序运行的数据持久化到硬盘之中,以确保数据的安全性。而数据库就是数据持久化的最佳选择。说白了,数据库就是存储数据的仓库。

1.3 数据库的分类

1.3.1 关系型数据库(RDBS)
代表有:MySQL、Oracle、DB2、SQL Server...
特点:关系紧密,都是表
  • 优点:
    1. 易于维护:都是使用表结构,格式一致;
    2. 使用方便:使用统一的SQL查询语言;
    3. 高级查询:可进行多表之间非常复杂的查询;
    4. 支持事务:可将复杂流程配成事务;
  • 缺点:
    1. 读写性能比较差,尤其是海量数据的高效率读写;
    2. 有固定的表结构,字段不可随意更改,灵活度稍欠;
    3. 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
1.3.2 非关系型数据库
代表有:MongoDB、Redis...
  • 优点:
    1. 格式灵活:存储数据的格式可以是key,value形式。
    2. 速度快:可以内存作为载体,而关系型数据库只能使用硬盘;
    3. 易用:数据库部署简单。
  • 缺点:
    1. 不能直接编写SQL,学习和使用成本较高;
    2. 不支持事务;
    3. 复杂查询时语句过于繁琐。

第2章:MongoDB

2.1 MongoDB简介

MongoDB是为快速开发互联网Web应用而设计的数据库系统。
MongoDB的数据模型是面向文档的,所谓文档是一种类似于JSON的结构,简单理解MongoDB这个数据库中存的是各种各样的JSON

第3章:MongoDB的使用

3.1 简介

3.1.1 数据库(database)

数据库是一个仓库,在仓库中可以存放集合。

3.1.2 集合(collection)

集合类似于JS中的数组,在集合中可以存放文档。
例如:student集合 teacher集合

3.1.3 文档(document)

文档数据库中的最小单位,我们存储和操作的内容都是文档。
类似于JS中的对象,MongoDB中每一条数据都是一个文档。

3.2 使用

3.2.1 基本命令
  1. 显示所有的数据库

    show dbs
    
  2. 切换到指定的数据库

    use 数据库名
    
  3. 显示当前所在的数据库

    db
    
  4. 删除当前数据库

    db.dropDatabase()
    
  5. 显示当前数据库中的所有集合

    show collections
    
  6. 删除当前集合

    db.collection.drop()
    
3.2.2 操作命令

在MongoDB,数据库和集合都不需要创建,当我们向集合或数据库中第一次插入文档时,集合和数据库会自动创建。

  1. 向集合中插入文档

    db.<collection>.insert(doc)
    如:db.stus.insert({name:"sunwukong",age:18})
    
  2. 查询集合中的文档

    db.<collection>.find()
    如:db.stus.find()
    
3.2.3 数据库的CRUD

查询网址

  1. 向集合中插入文档(create)

    // 向集合中插入一个或多个文档
    db.collection.insert() 
    
  2. 查询集合中的文档(read)

    // 查询集合中所有符合条件的文档,总是会返回一个数组个文档对象
    db.collection.find(查询条件)	
    
    1. 操作符: >, >=, <, <=, != 对应: “ g t " , " gt", " gt","gte", “ l t " , " lt", " lt","lte”, “$ne”
    2. 操作符:“ o r " , " or", " or","in”,“$nin”
    3. 正则表达式
    4. “$where”
  3. 修改集合中的文档(update)

    // 修改或替换一个或多个文档
    db.collection.update(查询条件,新的文档,配置对象)
    
  4. 删除集合中的文档(delete)

    // 删除所有(或第一个)符合条件的文档
    db.collection.remove(查询条件)	
    

第4章:Mongoose的使用

4.1 简介

Mongoose是一个对象文档模型(ODM)库,它对Node原生的MongoDB模块进行了进一步的优化封装,并提供了更多的功能。

4.2 优势

  1. 可以为文档创建一个模式结构(Schema)
  2. 可以对模型中的对象/文档进行验证
  3. 数据可以通过类型转换转换为对象模型
  4. 可以使用中间件来应用业务逻辑挂钩
  5. 比Node原生的MongoDB驱动更容易

4.3核心对象

4.3.1 Schema

模式对象,通过Schema可以对集合进行约束

4.3.2 Model

模型对象,相当于数据库中的集合,通过该对象可以对集合进行操作

4.3.3 Document

文档对象,它和数据库中的文档相对应,通过它可以读取文档的信息,也可以对文档进行各种操作

4.4 使用

4.4.1 连接数据库
  1. 下载安装Mongoose

    npm i mongoose --save
    
  2. 引入Mongoose

    var mongoose = require("mongoose");
    
  3. 连接MongoDB数据库

    mongoose.connect("mongodb://ip地址:端口号/数据库名");
    
4.4.2 创建核心对象
  1. 创建Schema对象,内部传入约束对象

    var Schema = mongoose.Schema;
    var xxxSchema = new Schema({
      字段:类型,
      字段:类型,
      字段:类型,
      字段:类型
    });
    
  2. 创建Model对象

    var XxxModel = mongoose.model("集合名",xxxSchema);
    

    注意:生成的集合会自动添加s,并转为小写。

    解决方式:

    1. 严格规范名称
    2. 在new Schema时候传入第二个参数{collection: ‘集合名称’}
  3. 创建Document对象

    var xxx = new XxxModel({
      属性:,
      属性:,
      属性:}); 
    
4.4.3 使用方式
	create()
		- 创建一个或多个文档对象并添加到数据库中
	find()
		- 查找所有符合条件的文档,返回的是数组
	update()
		- 修改(替换)一个或多个
	remove()
		- 删除一个或多个文档

4.5 mongoose的模块化

  1. tools/db.js

    // 该模块专门用来连接MongoDB数据库
    var mongoose = require("mongoose");
    mongoose.connect("mongodb://127.0.0.1/mongoose_test");
    mongoose.connection.once("open",function () {
      console.log("MongoDB数据库已经成功连接");
    });
    
  2. models/student.js

    //来定义Student的模型
    var mongoose = require("mongoose");
    var Schema = mongoose.Schema;
    
    //创建约束对象
    var stuSchema = new Schema({
      name:String,
      age:Number,
      gender:{
        type:String,
        default:"女"
      },
      address:String
    });
    
    //创建模型
    var Student = mongoose.model("student",stuSchema);
    
    //将Student暴露出去
    module.exports = Student;
    
  3. test.js

    //引入db.js
    require("./tools/db");
    
    //引入student.js
    var Student = require("./models/student");
    
    Student.create({
      name:"二郎神",
      age:"48",
      gender:"男",
      address:"小圣庙"
    },function (err) {
      if(!err){
        console.log("插入成功");
      }
    });
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值