前端随心记---------nodejs基础学习-MongoDB数据库一版

1. MongoDB简介

  1. MongoDB 是什么?
    • MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
    • MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂的数据类型。
  2. MongoDB 可以做什么呢?
    • MongoDB旨在WEB应用提供可扩展的高性能数据存储解决方案。
    • 在高负载的情况下,添加更多节点,可以保证服务器性能。
    • 面向集合存储,容易存储对象类型的数据,
    • 模式自由,采用无模式结构存储。
    • 支持完全索引,可以在任意属性上建立索引,包含内部对象。除此之外,MongoDB 还提供创建基于地理空间的索引的能力。
    • 支持查询。MongoDB 支持丰富的查询操作,MongoDB 几乎支持SQL中的大部分查询。
    • 强大的聚合工具。MongoDB 除了提供丰富的查询功能外,还提供强大的聚合工具,如count、group 等,支持使用MapReduce 完成复杂的聚合任务。
    • 支持复制和数据恢复。MongoDB 支持主从复制机制,可以实现数据备份、故障恢复、读扩展等功能。而基于副本集的复制机制提供了自动故障恢复的功能,确保了集群数据不会丢失。
    • 使用二进制格式存储,可以保存任何类型的数据对象。
    • 支持集群自动切分数据,对数据进行分片可以使集群存储更多的数据,实现更大的负载,也能保证存储的负载均衡。
    • 提供了当前所有主流开发语言的数据库驱动包,开发人员使用任何一种主流开发语言都可以轻松编程,实现访问MongoDB 数据库。
  3. 为什么要使用 MongoDB呢?
    • MongoDB独特的数据处理方式,可以将热点数据加载到内存,故而对查询来讲,会非常快(当然也会非常消耗内存);

    • 采用了BSON的方式存储数据,故而对JSON格式数据具有非常好的支持性以及友好的表结构修改性,文档式的存储方式,数据友好可见;

    • 数据库的分片集群负载具有非常好的扩展性以及非常不错的自动故障转移

  4. 如何使用 MongoDB 呢?
    • 可参考国内中文社区
  5. MongoDB 和 MySQL 有啥区别呢?

2. MongoDB安装和入门使用

  1. MongoDB 的下载
  2. MongoDB 的安装
  3. MongoDB 的入门使用

3. 命令行操作MongoDB

  1. 数据库基本的命令
    • 创建数据库   use  库名
    • 查看数据库   show  dbs
    • 查看数据库表   show tables 
    • 创建数据库中的表   db.createCollection( "表名”);
    • 查看表中信息   db.表名.find ();
    • 插入表信息    db.表名.insert(  {  id:12 , age: 22  }    );
    • 更新文档   db.表名.update(  { 'tittle': '标题一' } ,{ $set :{ 'title':'标题二'} } )
  2. 集合相关命令
  3. 文档相关命令

4. Robo 3T 的使用

  1. Robo 3T 是什么?
    • MongoDB可视化工具
  2. 为什么要使用 Robo 3T?
    • 将MongoDB的命令行转化为更直观的数据 
  3. 如何使用 Robo 3T?  

5. Mongoose 操作 Mongodb

  1. Mongoose 是什么?
    • Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具
  2. Mongoose 的基本使用
    • // 1. 引入一个包,mongoose 可以帮我们通过编程的方式操作 MongoDB数据库(1. 命令行 2. Robo 3T 操作)
      const mongoose = require('mongoose');
      
      // 2. 链接MongoDB数据库
      // mongodb:// 协议 nodejs---mongodb之间通信
      // localhost[:27017] 主机[:端口]
      // test 数据库的名称,数据库可以不存在 dns 域名解析系统
      // mongodb://localhost/test 一般叫做 dsn data source name 数据源名称
      mongoose.connect('mongodb://localhost/test');
      
      // 3. mongoose.model 是monogoose提供一个方法 可以创建一个构造函数。 返回值构造函数
      // Cat 构造函数的名称,对应 MongoDB 数据库里面的表名,注意:自动进行转换为小写,加上复数形式
      // { name: String } 表中的字段 String 类型
      
      // 这种写法: 代码先行。 这种 模式: ORM 模式 (object Relationship Map) (object Relationship Model)
      // 对象关系模型、对象关系映射: 俗话,就是让我们使用 面向对象的语法去操作数据库 。
      // 1. mongoose.model 返回值构造函数   ==== 非关系型数据库 集合(表)
      // 2. 通过构造函数得到的实例对象 ====== 非关系型数据库的 文档(记录)
      // 3. 实例对象上面存在很多方法 .save() | update() | remove() ==== 非关系型数据库里面的 文档 curd操作(增删改查)
      
      const Cat = mongoose.model('Cat', { name: String, age: Number }); // MongoDB ---》 cats 表
      
      // 4. 实例化模型得到对象
      // 实例化时候构造函数的参数,就是表中的记录
      const kitty = new Cat( { name: 'Zildjian', age: 2 } );
      
      // 5. kitty.save() 自动把数据存储到表里面 { name: 'Zildjian', age: 2 } 返回值 Promise对象
      kitty.save().then( function () {
          console.log( 'insert ok!' );
      } );

       

       

作业

  1. 除了 MongoDB,还有哪些 Nosql 数据库?
  2. 常见的 MongoDB 可视化客户端有哪些?
  3. studio 3t 和 robo 3t 之间有啥区别



 

posted @ 2019-08-21 00:47  胡炖鱼  阅读(216)  评论(0编辑  收藏  举报